flash AS3.0求助

作者&投稿:虞震 (若有异议请与网页底部的电邮联系)
flash as3.0 关于按键事件的运用~

stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownFun);stage.addEventListener(KeyboardEvent.KEY_UP,keyUpFun);function keyDownFun(e:KeyboardEvent):void{ if(e.keyCode==Keyboard.S){ trace("play");//在前面加上//可以去除面板的输出 play(); }}function keyUpFun(e:KeyboardEvent):void{ if(e.keyCode==Keyboard.S){ trace("stop");//在前面加上//可以去除面板的输出 stop(); }}将代码放到帧上面去即可。

但当你按下“s”键之后,再去按其他键,则“s”键就会被替代,不会触发play,由于没有释放,所以不会触发停止事件,即不支影响停止。

我想这些应该可以达到你要的效果了

setTimeout 方法是:每隔多长时间 执行下它括号里面的方法
但setTimeout 是只要执行过就会一直执行下去 直到遇到它的停止方法clearTimeout(timer);
所以它不会随你的for循环的终止而停止 而flak对象是在for循环里面new的
综上所述就是 for 循环停止了而setTimeout还在运行 却出现了对flak对象的引用
故出现空对象引用的错误
希望对你有所帮助!

你试一下看这样行不行,设置一个变量,例如var jumping:Boolean = false;当开始播放跳跃动画的时候设置jumping=true,当跳跃动画播放人物落地后设置jumping=false,你可以把设置变量的脚本写在mc内部,变量放在主时间轴。然后对jumping变量进行侦听,在跳跃过程中停止对键盘的侦听,当人物落地后再开始侦听键盘动作。
jumping.addEventListener(Event.CHANGE, ignoreKeyboard);
function ignoreKeyboard(evt:Event):void{
if (jumping){
stage.removeEventListener(KeyboardEvent.KEY_DOWN,keydown);
stage.removeEventListener(KeyboardEvent.KEY_UP,keyup);
}else{
stage.addEventListener(KeyboardEvent.KEY_DOWN,keydown);
stage.addEventListener(KeyboardEvent.KEY_UP,keyup);
}

呵呵,写一个键盘响应的侦听器。
里面写一个不断执行的侦听器,Event.ENTER_FRAME
用一个变量记录跳跃的状态,如果开始跳跃,变量记录。
判定变量处于跳跃时,便跳出这个函数,return。
虽然跳出了这个函数,但是Event.ENTER_FRAME还在不断执行,直到它的执行函数结束。
在他的执行函数里写上你的跳跃代码。

你的问题是出在了设计上,我们设计游戏人物一般按八个方向来设计,前后左右,左上,右上,左下,右下。人物跳跃一般是整体跳跃。无论你向哪个方向走,只要按下相应的跳跃键,就会跳跃。因此跳跃是单独的整体性运动。因此设计是很重要的。跳跃可以用Tween类来实现可以实现任意时间段的运动。比如你想实现整体跳跃,可以这样来写
当然这个也可以生成一个类文件,以方便时调用,具体的我也不去写它了。只是做为参考。
import fl.transitions.Tween;
import fl.motion.easing.*;
import fl.transitions.TweenEvent;
//创建两个缓冲类,一个为向上跳起,一个是向下下落。
var tweenUp:Tween;
var tweenDow:Tween;
//设定向上的起始位置,这个你可以根据你实际制作来改变数值。这个是y的坐标值。二者的差是跳起的高度。
var inN:Number = 50,outN:Number = 20;
//创建缓冲对象
tweenUp = new Tween(mary,"y",Linear.easeIn,inN,outN,0.5,true);
//定义缓冲事件,当缓冲执行完毕时,执行相应的动作。
tweenUp.addEventListener(TweenEvent.MOTION_FINISH,onUpFinish);
function onUpFinish(evt:TweenEvent):void
{
//当缓冲执行完毕,清除事件,并将变量清空。
tweenUp.removeEventListener(TweenEvent.MOTION_FINISH,onUpFinish);
tweenUp = null;
//跳起达到最高点后,注册向下下落的缓冲事件
tweenDow = new Tween(mary,"y",Linear.easeIn,outN,inN,0.5,true);
tweenDow.addEventListener(TweenEvent.MOTION_FINISH,onDowFinish);
}
function onDowFinish(evt:TweenEvent):void
{
//当执行完下落过程后,清除事件及变量,节省内存空间。
tweenDow.removeEventListener(TweenEvent.MOTION_FINISH,onDowFinish);
tweenDow=null;
}


翁源县19459283875: flash as3.0 新手问题!请高手帮忙 -
叔纪敏奇: 在影片剪辑的第10帧加: this.parent.removeChild(this);

翁源县19459283875: flash as3.0 游戏代码问题 , 紧急! 求高手帮忙 -
叔纪敏奇: var comment:TextField; var reslut:String; var i:int = -1; comment.text = reslut; function creat() { i=Math.round(Math.random()*3+1); var newmc:mc_ = new mc_(); newmc.name = "mc_" + i; newmc.x=stage.mymc.x; newmc.y=stage.mymc.y; ...

翁源县19459283875: flash as3.0求助!
叔纪敏奇: 按钮里面不能加代码,要加代码还得另外加元件,所以不要用按钮做直接用原件就好了 下面是关键代码: ad.addActionListener(MouseEvent.CLICK,ad); de.addActionListener(MouseEvent.CLICK,de); function ad(e){ var i:Number = 0; var a:abc = ...

翁源县19459283875: flash as3.0的脚本怎么写? 我在影片中添加了一个按钮 想让它点击按钮之后影片开始播放 具体怎么操作?求 -
叔纪敏奇: 按钮放在第一帧,按钮属性中设置<实例名称>为start_btn 选中第一帧,按F9,在代码框里写 stop(); start_btn.addEventListener(MouseEvent.CLICK,start_btnClickHandler); function start_btnClickHandler(evt:MouseEvent):void {play(); }

翁源县19459283875: ※FLASH 求助!!!※(关于AS3.0) -
叔纪敏奇: 先新建一个层,要让它跳到哪一帧就在代码层的那一帧上添加按钮并在属性上加实例名称tiao_btn,在该帧添加动作代码如下:tiao_btn.addEventListener(MouseEvent.CLICK,tiao);function tiao(event:MouseEvent):void{ gotoAndPlay(填上数字);}要停止的话,可以直接添加代码:stop();

翁源县19459283875: 求助:flash 侦听函数 AS3 -
叔纪敏奇: 你用的是AS2语法AS3中的用法应该是:bb1.addEventListener(MouseEvent.CLICK, handleClick);function handleClick(e:MouseEvent):void{ 你的处理语句;}

翁源县19459283875: flash AS3.0 代码求解.
叔纪敏奇: import flash.display.SimpleButton导入简单按钮类;import flash.display.MovieCl导入影片剪辑类.都是导入类,只是导入的类不同

翁源县19459283875: AS3.0 新手求助学习方法,求帮助,现在很困惑 -
叔纪敏奇: 在我看来as3.0才算真正的编程,要想学的话买或者到百度文库下载一个教程书籍,我一向认为书比视屏好,至于那些个语句怎么用,F1一下看看例子不就知道了?你问AS3.0怎么学...

翁源县19459283875: 急求救,flash , as3.0 , 控制一个人物行走的逐帧动画问题,具体如下:
叔纪敏奇: 你已经将动作做成剪辑了,拖入主场景后,新建图层把它拖进去就行了,由于flash默认把剪辑看成一帧,所以你不需要加代码,它自己就循环地运动了,不用gotoAndPlay,它就一直走下去,不让它走得时候,【剪辑实例名】.stop.祝你好运!

翁源县19459283875: flash AS3.0的全屏代码 -
叔纪敏奇: stage.displayState = StageDisplayState.FULL_SCREEN;//全屏显示stage.scaleMode = StageScaleMode.SHOW_ALL;//显示所有,不保证比例= StageScaleMode.EXACT_FIT;//锁定比例显示= StageScaleMode.NO_BORDER;//填满显示...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网