as3.0 math舞台问题

FLASH AS3.0实例教程:喷泉效果_中华文本库
第1页/共2页
文本预览:
FLASH AS3.0 实例教程:喷泉效果 在这个实例教程中, 我们将介绍利用速度向量和重置对象的技巧来实现喷泉效果。 所谓向量 就是有方向的量。比如一辆车从东向西以 80 公里每小时的速度行驶,那么我们就可以得到 汽车的速度向量,它包括两个元素:速度,每小时 80 公里,方向,由东向西。 下面我们来分析一下喷泉是怎样形成的。 喷泉是若干个水珠向上喷射,然后又受重力影响掉回地面。这个过程的速度向量有哪些,具 体又是怎么的呢?很容易发现至少的两个力, 一个是使水珠向上喷射的外力, 一个是使水珠 掉回地面的重力。 外力的速度向量:速度我设为 10-20 间的随机数,方向是向上的那就一定是 y 轴上的负数 了。将这个速度向量加到水珠上就使水珠向上喷射了。 具体做法是:在 ENTER_FRAME 事件中这水珠的 y 值加上-10 到-20 间的一个随机数。 重力的速度向量:速度就比较小了我设为 0.5,方向则是 y 轴上的正值。同样加到 ENTER_FRAME 事件中,这样水珠在喷射后就会掉回地上。 还有个问题, 因为速度向量是加在 ENTER_FRAME 事件中的, 水珠就可能一直按这些速度 向量运动,面远离舞台,那喷泉就不知会喷到什么地方去了。 要解决这个问题, 就要将超出舞台边界的水珠重新定位到喷射口, 这样就形成了不间断的喷 射了。 好了,上面分析了效果产生方法,下面就来制作。 第一步是要画一个水珠,新建一个影片剪辑元件,用放射填充画一个椭圆,左色标为白色, 透明度 100%,右色标略带点灰色,透明度 50%。在属性面板中设置椭圆在宽为 2 像素, 高为 5 像素。在库中右击该元件,打开连接窗口,(cs4 打开属性窗口),设置一个类名, 我设的是 pall。 接下来回到主场景,打开帧动作面板,我们来写代码。 喷泉是由若干水珠形成的,多少呢?我整了 500 个: varcount:int = 500; 重力速度向量: varzl:Number = 0.5; 将这 500 个水珠放到一个数组中: varballs:A balls = new Array(); 用一个 for 循环来将 500 个水珠放到数组中: for (var i:int = 0; i< i++) { varball:pall = new pall(); 将水珠定位到水珠的喷射口: ball.x = 260; ball.y = 200; 在 x 轴方向也设一个速度向量, 使水珠在 x 轴的一定范围内, 并将这个速度向量存到每个水 珠的自定义属性 vx 中:
ball["vx"]= Math.random() * 2 - 1; 下面是 y 轴方向的速度向量,将它存在自定义属性 vy 中: ball["vy"] = Math.random() * -10 - 10; 将水珠放到舞台上,并存到数组中: addChild(ball); balls.push(ball); 接下来侦听 ENTER_FRAME 事件,实现喷泉效果: addEventListener(Event.ENTER_FRAME, onEnterFrame); onEnterFrame 函数内容: 通过一个 for 循环为数组中的水
第1页/共2页
寻找更多 ""flash as3.0 舞台缩放的问题具体如下:_百度知道
flash as3.0 舞台缩放的问题具体如下:
拖adobe player播放器边框舞台场景候希望场景元件随改变或者说点击、化希望元件能随变代码何
提问者采纳
设置内容随舞台缩放scaleMode
scaleMode 是那个类的属性?怎么设置?能再说详细点不
stage类,stage.scaleMode=StageScaleMode.EXACT_FIT
提问者评价
其他类似问题
按默认排序
其他1条回答
flash测试能播放场景能放单独播放点化画面随放默认需要化图像保存原才要代码
我的就是是画面最大化时候,图形没有最大化啊
看看里面是否有代码,比如你用的元件。
有代码的。元件绑定类的。
那就是代码里面有问题。
as3的相关知识
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁AS3.0&元件在舞台不停地左右移动
import flash.events.MouseE
this.buttonMode =//小手
var yj1:yj = new yj&
;//新建影片剪辑元件属性添加类定义为yj,并声明新的变量yj1
addChild(yj1);//将元件加载到舞台上
this.x = 0;//x轴位置
this.y = 200;//y轴位置
var speed://声明一个int类型的变量
speed = 5;//赋值5& 为运动速度的变量
this.addEventListener(MouseEvent.CLICK,mouseclick);
//侦听鼠标点击事件;
function mouseclick(event:MouseEvent):void
&this.addEventListener(Event.ENTER_FRAME,onenterframe);
//侦听进入帧事件;
function onenterframe(e:Event)
&yj1.x +=&
&if (yj1.x &
stage.stageWidth)
&&speed = -5;
&else if (yj1.x & 0)
&&speed = 5;
import flash.display.MovieC
import flash.utils.T
import flash.events.TimerE
var mc:MovieClip=new MovieClip();
mc.name = "mc";
with (mc.graphics)
&beginFill(0x00FFFF);
&drawCircle(20,20,20);
addChild(mc);
mc.x = 50;
mc.y = 200;
var speed:int = 5;
var timer:Timer = new Timer(30,Infinity);
timer.addEventListener(TimerEvent.TIMER,MOVE);
timer.start();
var bool:Boolean =
function MOVE(e:TimerEvent)
&if (mc.x & 0 || mc.x
& stage.stageWidth)
&&bool = !
&if (bool)
&&mc.x +=&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。AS3.0背景问题_百度知道
AS3.0背景问题
我做了个钟表,但是现在我想给舞台插入个图片作为舞台的背景(不是钟表的背景),应该怎么写代码呢,谢谢大家了~~~
提问者采纳
要是你这个图片在库中,请你把库中的图片的链接属性打开,把“为ActionScript导出”勾选上,在类名称中输入一个名字,假如是Img,以下脚本能帮你实现。var stageW:Number=stage.stageWvar stageH:Number=stage.stageHvar bgImg:Img=new Img(stageW,stageH);var bitmap:Bitmap=new Bitmap(bgImg);stage.addChildAt(bitmap,0); 如果你是外部图片,那么就需要用到Loader类,在此不多说。
提问者评价
谢谢您了,能留下QQ吗,万分感激,好人一生平安!!!
参考资料:
其他类似问题
as3的相关知识
其他2条回答
七二/六六/六九//八二九,+Q 我看看吧
你直接写代码就行,不用看源文件啊,汗~~~
有诚意解决问题就来 否则 我不打扰了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁?您当前的位置: >
[AS3]as3.0处理视频截图源代码示例
时间: 09:12来源:</  极酷网页播放器
[AS3]as3.0处理视频截图源代码示例,让舞台能够显示连接的视频,让你的光辉形象显示出来。这一步很简单,你首先建立一个FLA文档后,按F11,让库面版显示出来,然后在面版的下部,右键-新建VIDEO
&&&&& 第一步:让舞台能够显示连接的视频,让你的光辉形象显示出来。这一步很简单,你首先建立一个FLA文档后,按F11,让库面版显示出来,然后在面版的下部,右键-新建VIDEO,命名随意,完成后,把
这个视频从库拖到舞台上,由于初始大小为:160*120,你可以按照你的喜欢,设置为任何大小,我这里就设置为:320*240。并且命名此VIDEO的
实例名为:cameraVideo
&&&&&& 接着在时间面版上,新建一个时间轴,并且命名为:action,按F9,开始写代码(后面的代码全都写在里面)。
//这是定义个新的相机视频,然后从当前的视频头取得内容。
var myCamera:Camera =Camera.getCamera();
//这个就比较简单了,把定义的相机视频绑定到放置的VIDEO上就可以了
cameraVideo.attachCamera(myCamera);
&&&&&& 测试下,看看,是否你的光辉形象出现了。注意:在测试的时候,跳出的设置,你应该选择:允许
&&&&& 第二步:事情没那么简单,我们需要填坑。
&&&&&& ok,视频是出来了,但是事情还没那么简单,因为你需要考虑万一没装视频头怎么办?总需要来个提示吧。所以我们要把刚才的代码进
行完善,弄个辨别语句。
var&myCamera:Camera=Camera.getCamera();&if&(myCamera==null)&{&&&//意思就是,未检测到视频头,然后该干嘛,当然你想干嘛就干嘛。&&&trace(&你还没安装视频头,或者视频头未连接&);&}&else&{&&&//这是检测成功了&&&cameraVideo.attachCamera(myCamera);&&&&&trace(&视频头检测成功&);&}&
&&& 上面的测试是有一点小问题的,因为刚才已经测试成功过有视频头了,现在虽然拔掉视频头,但是他还是会显示连接正确,为啥呢,因为
刚才的连接数据他还是存在 了本地上。你可以关掉FLASH,然后再重新测试下看看。这个没关系,因为,一般而言在网页上这个错误倒不会出
&&& 第三步:换种做法。
&&& 其实,我写这部分,还是有原因的,因为如果按照刚才的从库里拉VIDEO,后面截图会有点小问题,为了方便讲解,再来另一种方法,首先
把舞台上的VIDEO删除掉,然后代码如下:
var&cameraVideo:Video&=&new&Video();&addChild(cameraVideo);&cameraVideo.width&=320;&cameraVideo.height&=240;&&var&myCamera:Camera=Camera.getCamera();&if&(myCamera==null)&{&&&//意思就是,未检测到视频头,然后该干嘛,当然你想干嘛就干嘛。&&&//trace(&你还没安装视频头,或者视频头未连接&);&}&else&{&&&//这是检测成功了&&&&cameraVideo.attachCamera(myCamera);&&&//trace(&视频头检测成功&);&&&}&
&&&& 可以注意到,这里是用代码去直接召唤VIDEO了,这样更符合代码写作。
很简单吧,非常简单。第一部分算完成了,下一部分就是专门讲tileList这个组件,和截图。
下面让我们讲讲截图和TileList的应用。
&&&&&& 拍照,拍照,当然要拍很多张,然后放在一起,让自己去挑一些好的,然后再保存到电脑上。
&&&&&& 所以,我们需要想个办法,把当前的样子拍下来,这就是截图。
&&&&&& 第一步:截图
&&&&&& 那怎么截图呢?也很简单,用BitmapData就可以搞定。首先在舞台上加个Button,实例命名为:btn,作为截图触发按钮。代码如下:
var&cameraVideo:Video&=&new&Video();&addChild(cameraVideo);&cameraVideo.width&=320;&cameraVideo.height&=240;&&var&myCamera:Camera=Camera.getCamera();&if&(myCamera==null)&{&&&//trace(&你还没安装视频头,或者视频头未连接&);&}&else&{&&&cameraVideo.attachCamera(myCamera);&&&btn.addEventListener(MouseEvent.CLICK,beginSnap);&}&//main做为测试截图容器,只是测试用,下一步就不需要这个了。&var&main:Sprite&=&new&Sprite();&main.y=260;&addChild(main);&&function&beginSnap(event:MouseEvent):void&{&&&//trace(cameraVideo.width);&&&var&bitmapdata:BitmapData=new&BitmapData(320,240);&&&bitmapdata.draw(cameraVideo);&&&var&bitmap:Bitmap=new&Bitmap(bitmapdata);&&&main.addChild(bitmap);&}&
&&&&& 如果你测试成功的话,应该就是可以看到点击按钮后,截图自然会出现在下方,当然目前只是在测试,只是让你明白每一步的做法。
&&&&&& 完成截图后,我们需要停下来想一下。想象一下:我们拍了很多照片,然后把拍的无论是好的坏的,都扔到一个篮子里,然后我们再从
里面挑选出好的,去打印成大照片。思路很清晰,那么我们需要做的,就是这个篮子问题。FLASH的魅力就是在这个篮子上的表现上,我们可以
把照片横着排,竖着排,甚至是:一会儿排成人字形,一会儿排成大字形。我想这就是FLASH的乐趣,当然,这里我只说其中一种,最工业化的
一种,直接放到FLASH自带的TileList组件上。
&&&&& 第二步:感受下TileList组件
&&&&& 如何使用TileList组件呢,其实帮助里说的很清楚,而且这里也非常详细的说明了使用方法,如果你愿意认真的看下,后面的教程就很
简单了。不过我这里还是放一个比较贴近的小教程,这样下一步,我就不用解释的那么费劲了。
&&&&& 新建一个FLA文件,然后在舞台上,随意画一个圆形,或者方形,然后选择按F8转化为实例,命名:mc,然后选择:Export for
Actionscript,在Class里也命名为:mc,这样就方便在代码里调用这个图。
&&&&& 好,接着从组件里把TileList组件拉到舞台,长度设置为400,其他暂时默认,命名为:lists。
&&&&& 开始在新的时间轴上加代码:
var&i:&for(i=0;i;i++){&&&var&tempMc:Object=&new&Object();&&&tempMc.label&=&&PIC&+i;&&&tempMc.source&=&new&mc();&&&lists.addItem(tempMc);&}&
& &&&&&& 运行下看看,你所画的小图,有10张出现在这个组件上,而且有标签名字,别忘了Object我还可以加很多乱七八糟的自定义属性,比如
toolTip这种,意思就是移动到图片上自动出现提示标签,这个都是题外话,你感觉一下上面的代码,应该对titleList组件有点感觉了吧。
&&&&&& 那么好,我们回到视频照相程序上,我们要做的就是把每次截图都放到这个LIST上,但是我们目前截图是320*240的,好象太大了吧,
不过你不要担心,放在LIST上的话,一切都会以LIST定义的高宽为主,意思就是:你想让截图以多大的大小放在tileList上,是要在tileList
组件上设置的。&
&&&&&& 那么怎么设置tileList呢,这个就简单了,点击下这个组件,然后按SHIFT+F7,就会出现组件检查器,随便你怎么设置。
&&&&&& 第三步:组装
&&&&&& 这步就是把说过的东西给组装起来,拍照,截图,把图放到tileList上。代码如下:
//只要加一句,然后修改beginSnap构造函数就可以&//先建立一个数组,用来放截图数据&var&contents:Array&=&new&Array();&function&beginSnap(event:MouseEvent):void&{&&&var&bitmapdata:BitmapData=new&BitmapData(320,240);&&&bitmapdata.draw(cameraVideo);&&&var&bitmap:Bitmap=new&Bitmap(bitmapdata);&&&addChild(bitmap);&&&&contents.push(bitmap);&&&var&i:&&&for&(i=0;&i&&&&&var&tempObj:Object&=&new&Object();&&&&&tempObj.source=contents;&&&&&tempObj.label=&image&+;&&&}&&&&&&&&&&&&&&&&//lists就是tileList的实例名,我把里面的columnWidth设置为120;rowHeight设置为90&&&lists.addItemAt(tempObj,0);&}&}

我要回帖

更多关于 as3.0 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信