Function Can';不要让电影在功能上消失
我正在尝试做一个简单的射击游戏,菲亚特Multipla会掉到屏幕底部。我创建了一个函数来生成下降倍数,在这个函数中我遇到了一个问题 主要问题是,将multideath状态更改为1“Death”后,即使使用ENTER_框架保持,函数也不会执行任何操作。当我在Multiplia movieclip中实现它时,这个孩子变得不可见了,但即使在那个里以Death=1做出响应后,什么也并没有发生 我对这一切都不熟悉,在编程过程中我遇到并解决了一些问题,但现在我的难题是。代码要么完全失败,要么我不知道什么是显而易见的。就像我说的,我是新手 非常感谢你的帮助 函数如下:Function Can';不要让电影在功能上消失,function,actionscript-3,actionscript,movieclip,enterframeevent,Function,Actionscript 3,Actionscript,Movieclip,Enterframeevent,我正在尝试做一个简单的射击游戏,菲亚特Multipla会掉到屏幕底部。我创建了一个函数来生成下降倍数,在这个函数中我遇到了一个问题 主要问题是,将multideath状态更改为1“Death”后,即使使用ENTER_框架保持,函数也不会执行任何操作。当我在Multiplia movieclip中实现它时,这个孩子变得不可见了,但即使在那个里以Death=1做出响应后,什么也并没有发生 我对这一切都不熟悉,在编程过程中我遇到并解决了一些问题,但现在我的难题是。代码要么完全失败,要么我不知道什么是显
import flash.events.Event;
import flash.desktop.NativeApplication;
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
Mouse.hide();
var velocity = 0;
var ammo = 6;
LGUI.LGUIammo.gotoAndStop(6);
var counter = 0;
function multiplarain()
{
var x1 = Math.ceil(Math.random() * 280);
var y1 = -200;
var random:Multipla = new Multipla();
var life = 265;
var multideath = 0;
random.x = 100 + x1;
random.y = y1
addChild(random);
random.gotoAndStop(1);
setChildIndex(random, +1);
addEventListener(Event.ENTER_FRAME, Death);
function Death(event:Event):void
{
if(multideath >= 1)
{
removeEventListener(Event.ENTER_FRAME, Death);
removeChild(random);
}
}
addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);
function fl_EnterFrameHandler(event:Event):void
{
if(random.y >= 680)
{
removeEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler)
removeChild(random);
trace("rofl");
}
}
random.addEventListener(Event.ENTER_FRAME, fl_AnimateVertically);
function fl_AnimateVertically(event:Event)
{
velocity = velocity + 0.000035;
random.y += 1.5 + velocity;
}
random.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler);
function fl_TapHandler(event:TouchEvent):void
{
counter = counter + 1;
ammo -= 1;
}
if(ammo == 6)
{
LGUI.LGUIammo.gotoAndStop(6);
}
if(ammo == 5)
{
LGUI.LGUIammo.gotoAndStop(5);
}
if(ammo == 4)
{
LGUI.LGUIammo.gotoAndStop(4);
}
if(ammo == 3)
{
LGUI.LGUIammo.gotoAndStop(3);
}
if(ammo == 2)
{
LGUI.LGUIammo.gotoAndStop(2);
}
if(ammo == 1)
{
LGUI.LGUIammo.gotoAndStop(1);
}
if(ammo <= 0)
{
LGUI.LGUIammo.gotoAndStop(7);
}
HGUI.saved.text = counter;
this.addEventListener( Event.ENTER_FRAME, handleCollision)
var kucyk = LGUI.LGUIlife.lifeitself;
function handleCollision(e:Event):void
{
if (random.hitTestObject(LGUI))
{
kucyk = LGUI.LGUIlife.lifeitself;
kucyk.width -= 0.1;
}
/*if (kucyk.width == 0.75)
{
trace("cycki");
NativeApplication.nativeApplication.exit();
}*/
}
}
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
this.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler2);
function fl_TapHandler2(event:TouchEvent):void
{
this.gotoAndPlay(2);
}
addEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);
function fl_EnterFrameHandler(event:Event):void
{
if(this.currentFrame == 60)
{
this.visible = false;
MovieClip(root).multideath = 1;
trace(MovieClip(root).multideath);
removeEventListener(Event.ENTER_FRAME, fl_EnterFrameHandler);
removeEventListener(Event.ENTER_FRAME, fl_TapHandler2);
}
}
从我上次使用AS2到现在已经有10年了,但我猜这个multipa将multideath属性设置在了错误的位置。如果我没记错的话,root是最顶层(您的应用程序)。因此,如果您的第一个代码不在主时间线上,而是在主时间线上的movieclip中,那么它将不起作用。尝试对死亡函数进行跟踪,看看多重死亡是否真的在发生变化:
trace(multideath);
在multipla代码中尝试以下操作:
parent.multideath = 1;
而不是
MovieClip(root).multideath = 1;
我在问自己为什么需要这么多输入帧侦听器?您可以只使用一个,并将所有动画组合到一个功能中
此外,您不需要在每一帧上检查multideath,只需在单独的功能中删除movieclip:
function removeMultipla():void
{
removeChild(random);
}
只需从Multipla调用此函数,而不是设置multideath属性:
parent.removeMultipla();