动力男孩flash乐园

不抛弃、不放弃,梦想要迂回去实现~!
  • 首页
  • 我的座右铭
  • 我的作品
  • 留言聊天室
  • 动力男孩的诞生

存档

‘我的AS3实验室’ 分类的存档
738次浏览↓

一个测试睡眠的例子

2009年11月27日 powerboy 31 条评论

  这里给出一个小例子,方便大家看到是否设置睡眠的区别。右上角的5个按钮代表重力方向,他们都是用向量模拟的,中间的按钮“无”代表失重状态。关于睡眠设置,默认是禁止睡眠,点击右侧按钮可以切换状态。通过观察你可以发现,当所有小球停止运动的时候,如果是禁止睡眠,当你改变重力方向的时候它们仍然可以运动,如果是允许睡眠的话,你会发现他们确实睡的跟死猪一样,一动不动。

Get Adobe Flash player

  需要看源码的朋友,请在下方留言,留下你的邮箱地址,我会尽快回复你的。

分类: Box2D, 我的AS3实验室 标签: as3, flash
932次浏览↓

Box2D——shoot Demo

2009年11月27日 powerboy 29 条评论

  最近研究Box2D引擎,做了一个Demo,这个引擎结构还是比较复杂的,不过入门之后学起来就没一开始那么费力了。

Get Adobe Flash player

  需要看源码的朋友,请在下方留言,留下你的邮箱地址,我会尽快回复你的。

分类: Box2D, 我的AS3实验室 标签: as3, flash
437次浏览↓

天气预报

2009年5月29日 powerboy 没有评论

弄了一个天气预报的小程序,由于安全沙箱的原因,请下载到本地打开使用。
weather.swf

分类: 我的AS3实验室 标签: as3, flex, 实验室
789次浏览↓

A*算法寻路实验

2009年3月6日 powerboy 4 条评论

最近一直在研究A*算法,看了很多人写的一些相关代码,但是总觉得代码的结构很混乱。不过这里我要感谢一下sunbright,因为他的代码是我目前在A*开源里面见过的结构最清晰的,我在研究的过程中根据需要又做了部分改动,目的是为了结合自己现有的一些架构来做项目。

Get Adobe Flash player

源文件:AStar.rar

分类: 我的AS3实验室 标签: as3, 实验室
1,309次浏览↓

mp3播放器 beta2.0(开源)

2009年1月7日 powerboy 9 条评论


mp3 beta2.0功能:
1、播放、暂停、停止;
2、通过双进度条显示歌曲加载进度和播放进度;
3、重复A—>B功能,当歌曲加载完毕之后,会显示歌曲的声波振幅,指针会跟随声音播放进度而指向声波振幅不同位置,你也可以拖动指针从而形成一个矩形选区,声音会在这个选区之内重复播放。你可以单击振幅任意位置或者拖动进度条来取消选择。

新增:
4、波形效果;
5、播放列表;
6、歌词同步播放,可以通过改变播放进度来改变歌词显示,也可以把歌词拖拽到你想要的位置进行播放。

修正:去掉了beta1.0的频谱效果,主要因为和变速功能有冲突。

未解决的问题:歌曲变速之后不能与播放进度和歌词同步。

目前最让我头疼的就是这个歌曲变速的问题,如果在初始化的时候已经是变速状态,则播放进度显示是一致的,如果播放过程中再次变速,则同步会出现问题。对于歌词来说,只要变速之后就不能同步,这个问题揣摩了两天,尚未找到好的解决方法,而且我发现加了变速功能之后,内存消耗的比较多,我在考虑下一版本是不是要把这个变速功能去掉。

源代码:Player.rar

分类: 我的AS3实验室 标签: as3, 实验室
806次浏览↓

mp3播放器 beta1.0

2008年12月27日 powerboy 1 条评论

最近利用as3新做了一个mp3播放器,如果你得浏览器没有安装flashplayer10,是无法正常使用的。

mp3 beta1.0功能:
1、播放、暂停、停止;
2、通过双进度条显示歌曲加载进度和播放进度;
3、重复A—>B功能,当歌曲加载完毕之后,会显示歌曲的声波振幅,指针会跟随声音播放进度而指向声波振幅不同位置,你也可以拖动指针从而形成一个矩形选区,声音会在这个选区之内重复播放。你可以单击振幅任意位置或者拖动进度条来取消选择。

Get Adobe Flash player

分类: 我的AS3实验室 标签: as3, 实验室
582次浏览↓

一个简易压力签字笔工具

2008年11月22日 powerboy 1 条评论

可以模拟平滑和压力效果,希望大家多多提出宝贵意见,这个东东目前可以做绘图板的一个工具来使用,过段时间我准备做一些加强型功能,让它能够做一些更酷更炫的效果出来。

分类: 我的AS3实验室 标签: as3, 实验室
1,626次浏览↓

as3.0 贝塞尔曲线算法的研究

2008年9月24日 powerboy 10 条评论

最近研究了一下贝塞尔曲线,刚开始弄的时候摸不着头脑,网上相关文章的文章也是少得可怜,而且有的效果要么很简单、要么是半成品,于是自己闷头搞了几天,总算小有收获。

其实现在想一想,也不是非常的难。先从点1到点2绘制曲线、再从点2到点3绘制曲线以此类推,乍一看没什么问题,但是你会发现,每条线段之间的衔接点是尖锐的而不是平滑的,所以有一种做法可以解决这个问题,那就是将一条曲线看做两条曲线连接而成。仔细想一下,我们在绘制一条曲线的时候,应该由三个点组成:起点、拐点、终点。那么当画一组连续曲线的时候,我们很自然能够想到先从点1开始、穿过点2、绘制到点3结束、再穿过点4绘制到点5等等以此类推。举个例子,用过ps的人应该不会不知道钢笔工具吧,当我们直接用鼠标点击不同位置的时候,显示的是若干条直线而不是曲线,因为这个是曲线的一种特殊情况,它的拐点和起点、终点处于同一直线上,如果我们用鼠标点击之后,再进行拖拽的话,那么就会在起点或终点处产生左右两个控制点,这样画出来的线就是曲线了。那么顺着这个思路,曲线应该怎么描述呢?首先我们应该加入一个“拐点”,把曲线看成从起点到拐点、拐点到终点这么两条曲线组成。我们不妨设起点为a,a处的右控制点为b,终点为d,终点的左控制点为c,拐点为e。看下面的演示:

当直线的时候,点e位于a、b两点的1/2处,当曲线的时候,点e可以看做位于b、c两点的1/2处。

下载: B_point.as
  1. package
  2. {
  3. import flash.geom.Point;
  4.  
  5. public class B_point
  6. {
  7. public var c_point:Point;
  8. public var l_point:Point;
  9. public var r_point:Point;
  10.  
  11. public function B_point(x, y)
  12. {
  13. init(x, y);
  14. }
  15.  
  16. private function init(x, y):void
  17. {
  18. var point = new Point(x, y);
  19.          c_point = point.clone();
  20.        l_point = point.clone();
  21.          r_point = point.clone();
  22. }
  23.  
  24. public function toString(){
  25. return ("c_point:" + c_point.toString() + "l_point:" + l_point.toString() + "r_point:" + r_point.toString());
  26. }
  27. }
  28. }
下载: Bessel.as
  1. package {
  2. import flash.display.Sprite;
  3. import flash.display.MovieClip;
  4. import flash.events.MouseEvent;
  5. import flash.net.navigateToURL;
  6. import flash.net.URLRequest;
  7. import flash.geom.Point;
  8.  
  9. public class Bessel extends Sprite {
  10. private var arr:Array = new Array();
  11. private var drawShape:Boolean = false;
  12. private var change:Boolean = false;
  13. private var shape:Sprite;
  14. private var colorL:Number = 0xffff00;
  15. private var colorR:Number = 0xff0000;
  16. public function Bessel() {
  17. init();
  18. }
  19.  
  20. private function init():void {
  21. shape = new Sprite();
  22. shape.mouseEnabled = false;
  23. addChild(shape);
  24. bg.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
  25. bg.addEventListener(MouseEvent.MOUSE_UP,onUp);
  26. bg.doubleClickEnabled = true;
  27. bg.addEventListener(MouseEvent.DOUBLE_CLICK,onDoubleClick);
  28. btn.buttonMode = true;
  29. btn.addEventListener(MouseEvent.MOUSE_DOWN,onChange);
  30. }
  31.  
  32. private function onChange(e:MouseEvent):void {
  33. change = !change;
  34. if (change){
  35. e.target.nextFrame();
  36. }else{
  37. e.target.prevFrame();
  38. }
  39. }
  40.  
  41. private function onDown(e:MouseEvent):void {
  42. drawShape = true;
  43. stage.addEventListener(MouseEvent.MOUSE_MOVE,onMove);
  44. arr.push(new B_point(mouseX,mouseY));
  45. }
  46.  
  47. private function onUp(e:MouseEvent):void {
  48. stage.removeEventListener(MouseEvent.MOUSE_MOVE,onMove);
  49. drawShape = false;
  50. addBesselCurve(this, arr, 2, colorL, 100);
  51. }
  52.  
  53. private function onMove(e:MouseEvent):void {
  54. if (drawShape) {
  55. var newPoint:Point = new Point(mouseX,mouseY);
  56. var oldPoint:B_point = arr[arr.length - 1];
  57. oldPoint.r_point = newPoint;
  58. oldPoint.l_point = Point.interpolate(oldPoint.c_point,oldPoint.r_point,2);
  59. drawBesselPoint(shape, arr, 0, 0x33FF00, 60);
  60. } else if (arr.length>0) {
  61. newPoint = new Point(mouseX, mouseY);
  62. oldPoint = arr[arr.length - 1];
  63. shape.graphics.clear();
  64. drawBesselCurve(shape, newPoint, newPoint, oldPoint.r_point, oldPoint.c_point, 0, 0x33FF00, 80);
  65. }
  66. e.updateAfterEvent();
  67. }
  68.  
  69. private function onDoubleClick(e:MouseEvent):void {
  70. arr.push(arr[0]);
  71. shape.graphics.clear();
  72. if (change == true){
  73. addBesselCurve(this, arr, 2, colorL, 100);
  74. }
  75. arr = new Array();
  76. }
  77.  
  78. private function drawBesselPoint(_mc:Sprite,bpArr:Array,lineWidth:Number,lineColor:Number,lineAlpha:Number):void {
  79. _mc.graphics.clear();
  80. addBesselCurve(_mc, bpArr, lineWidth, lineColor, lineAlpha);
  81. if (bpArr.length>1) {
  82. var b1:B_point = bpArr[bpArr.length-2];
  83. drawBesselCtrlPoint(_mc, b1, 1, lineColor, lineAlpha);
  84. }
  85. var b2:B_point = bpArr[bpArr.length-1];
  86. drawBesselCtrlPoint(_mc, b2, 1, lineColor, lineAlpha);
  87. }
  88.  
  89. private function drawBesselCtrlPoint(_mc:Sprite, b_p:B_point, lineWidth:Number, lineColor:Number, lineAlpha:Number) {
  90.  
  91. _mc.graphics.lineStyle(lineWidth, lineColor, lineAlpha/2);
  92. _mc.graphics.moveTo(b_p.c_point.x, b_p.c_point.y);
  93. _mc.graphics.lineTo(b_p.r_point.x, b_p.r_point.y);
  94. _mc.graphics.lineStyle(lineWidth*3, lineColor, lineAlpha);
  95. _mc.graphics.lineTo(b_p.r_point.x, b_p.r_point.y+.5);
  96.  
  97. _mc.graphics.lineStyle(lineWidth, lineColor, lineAlpha/2);
  98. _mc.graphics.moveTo(b_p.c_point.x, b_p.c_point.y);
  99. _mc.graphics.lineTo(b_p.l_point.x, b_p.l_point.y);
  100. _mc.graphics.lineStyle(lineWidth*3, lineColor, lineAlpha);
  101. _mc.graphics.lineTo(b_p.l_point.x, b_p.l_point.y+.5);
  102. }
  103.  
  104. private function addBesselCurve(_mc:Sprite,bpArr:Array,lineWidth:Number,lineColor:Number,lineAlpha:Number):void {
  105. if (bpArr.length>1) {
  106. var b1:B_point = bpArr[bpArr.length-2];
  107. var b2:B_point = bpArr[bpArr.length-1];
  108. drawBesselCurve(_mc, b1.c_point, b1.r_point, b2.l_point, b2.c_point, lineWidth, lineColor, lineAlpha);
  109. }
  110. }
  111.  
  112. private function drawBesselCurve(_mc:Sprite, a:Point, b:Point, c:Point, d:Point, lineWidth:Number,lineColor:Number,lineAlpha:Number) {
  113. var b_len:Number = b.subtract(a).length;
  114. var c_len:Number = c.subtract(d).length;
  115. if (b_len == 0 && c_len == 0) {
  116. var e:Point = Point.interpolate(a, d, .5);
  117. } else {
  118. e = Point.interpolate(c, b, .5);
  119. }
  120. _mc.graphics.lineStyle(lineWidth, lineColor, lineAlpha);
  121. _mc.graphics.moveTo(a.x, a.y);
  122. _mc.graphics.curveTo(b.x, b.y, e.x, e.y);
  123. _mc.graphics.lineStyle(lineWidth, colorR, lineAlpha);
  124. _mc.graphics.curveTo(c.x, c.y, d.x, d.y);
  125. }
  126.  
  127. }
  128. }

最终效果如下:

但是这个算法还有个不完善的地方,画过的线段就不能再调整了,但是我们在使用ps的时候都知道,即使是画过的曲线,控制点仍然可以任意调整,并且同时控制着左右两边曲线的弧度。如果哪位研究此类算法,还望与我一起深入探讨一下。

惨不忍睹的源文件:bessel_test.rar

分类: 我的AS3实验室 标签: as3, 实验室, 贝塞尔曲线
622次浏览↓

图像浏览器1.0

2008年9月19日 powerboy 4 条评论

最近在研究as3的相关功能,顺便弄了一个简易的照片浏览器,以后准备弄一个功能强大的,不像这样小打小闹了,嘿嘿!

分类: 我的AS3实验室 标签: as3, 实验室
RSS 订阅
  • Google
  • 有道
  • 鲜果
  • 抓虾
  • My Yahoo!
  • newsgator
  • Bloglines
  • 哪吒

分类列表

  • actionscript3.0学习笔记 (16)
  • air学习笔记 (6)
  • alternativa3D (3)
  • AS2疑难杂症 (1)
  • Box2D (3)
  • flash教程 (5)
  • flex学习笔记 (3)
  • 心情驿站 (24)
  • 我收集的flash 8.0资料 (3)
  • 我收集的flash 9.0资料 (3)
  • 我收集的文章 (21)
  • 我的AS2实验室 (4)
  • 我的AS3实验室 (9)
  • 我的新闻 (17)
  • 我的相册 (6)
  • 我翻译的英文资料 (7)
  • 日语学习 (2)
  • 英语学习 (2)

最近发表

  • 浅谈工具的意义
  • “小小便利店”终于上线啦
  • 禁止按tab时焦点从flash切换到地址栏
  • 隐藏Flex滚动条的箭头和滑竿
  • 为asdoc设定example
  • 一个测试睡眠的例子
  • Box2D——入门教程
  • Box2D——shoot Demo
  • 一个由单例模式引发的问题
  • 给图像加水印

最近评论

  • 空谷的回响 发表于 一个测试睡眠的例子
    我的QQ:373131285,希... »
  • manyu 发表于 一个测试睡眠的例子
    请给我发一份吧~我也在学习~谢谢... »
  • Brooks 发表于 mp3播放器 beta2.0(开源)
    好像不能下啊,楼主给我发一份吧,... »
  • velika 发表于 Box2D——shoot Demo
    刚开始学Box2d。发一份源码来... »
  • velika 发表于 一个测试睡眠的例子
    我也想要一份源码,谢谢15337... »
  • velika 发表于 一个测试睡眠的例子
    正在学BOX2D,楼主帮了我大忙... »
  • sky 发表于 一个测试睡眠的例子
    房主,你太强了,非常值得我学习,... »
  • GGGG 发表于 Box2D——shoot Demo
    zswrhua@163.com ... »
  • kirahua 发表于 Box2D——shoot Demo
    我也正在学习用BOX2D 做游戏... »
  • sans 发表于 Box2D——shoot Demo
    楼主很厉害哦,正在学box2d呢... »
  • 下一页 »

存档

  • 2010年五月 (2)
  • 2010年二月 (1)
  • 2009年十二月 (2)
  • 2009年十一月 (4)
  • 2009年十月 (1)
  • 2009年九月 (2)
  • 2009年八月 (2)
  • 2009年七月 (4)
  • 2009年五月 (3)
  • 2009年三月 (3)
  • 2009年二月 (2)
  • 2009年一月 (8)
  • 2008年十二月 (10)
  • 2008年十一月 (7)
  • 2008年十月 (4)
  • 2008年九月 (7)
  • 2008年八月 (8)
  • 2008年七月 (4)
  • 2008年六月 (5)
  • 2008年五月 (11)
  • 2008年四月 (14)
  • 2008年三月 (8)
  • 2008年二月 (12)

友情链接

  • alan新浪博客
  • sunbright
  • 云风Blog
  • 嘎嘎在东京
  • 张毅君/工长君
  • 永明则名
  • 海峡IT网
  • 闪界
  • 雷晟的新浪博客
  • 鼠标炸弹
置顶 WordPress
版权所有 © 2008-2010 动力男孩flash乐园 京ICP备09048608号
主题由 NeoEase 提供, 通过 XHTML 1.1 和 CSS 3 验证.Powered by WordPress