Actionscript 3 为什么这里会出现错误1118?
在下面的代码中,我有几个MovieClips都是thebellet()。它们出现在另一部名为gamelevel的电影中,也出现在一个名为bArray的阵列中。以前我在游戏级别为它们编制了索引,但在调用事件侦听器之后,我无法再为它们编制索引,并收到错误“1118:将静态类型对象的值隐式强制转换为可能不相关的类型flash.display:DisplayObject”。当用户单击它们时,它们会死亡(并更改帧),尸体会被放在其他活着的尸体下面,这就是我需要在它们死亡时将它们索引为1的原因。我明白错误是怎么说的,但我该怎么做呢? 代码运行得很好,但在我在其中提到的两行代码中没有,请看一看:Actionscript 3 为什么这里会出现错误1118?,actionscript-3,compiler-errors,Actionscript 3,Compiler Errors,在下面的代码中,我有几个MovieClips都是thebellet()。它们出现在另一部名为gamelevel的电影中,也出现在一个名为bArray的阵列中。以前我在游戏级别为它们编制了索引,但在调用事件侦听器之后,我无法再为它们编制索引,并收到错误“1118:将静态类型对象的值隐式强制转换为可能不相关的类型flash.display:DisplayObject”。当用户单击它们时,它们会死亡(并更改帧),尸体会被放在其他活着的尸体下面,这就是我需要在它们死亡时将它们索引为1的原因。我明白错误是
public function clicked (event:MouseEvent)
{
if (event.target is TheBeetle && event.target.currentFrame <= 2)
{
var mc:Object = event.target
// TheBeetle is actually a MovieClip but i cannot write: var mc:MovieClip = event.target, if i do i receive 1118
if (mc.currentFrame == 1)
{
mc.gotoAndStop (Math.floor(Math.random() * 3 + 4));
}
else
{
mc.gotoAndStop (3);
}
mc.filters = null;
// Here i need to index the TheBeetle as i did before like gamelevel.setChildIndex(mc,1) but i'd receive 1118!
bArray.splice (bArray.indexOf(mc),1);
if (bArray.length == 0)
{
removeEventListener (Event.ENTER_FRAME,frameHandler);
waveTimer.removeEventListener (TimerEvent.TIMER_COMPLETE, changeLocation);
}
}
}
已单击的公共函数(事件:MouseEvent)
{
如果(event.target)是甲虫&&event.target.currentFrame,则需要将target显式强制转换为MovieClip类:
var mc:MovieClip = MovieClip(event.target);
您可能需要在检查目标的currentFrame的行之前执行此操作,因为“Object”没有currentFrame方法。您需要将目标显式强制转换为MovieClip类:
var mc:MovieClip = MovieClip(event.target);
您可能需要在检查目标的currentFrame的行之前执行此操作,因为“Object”没有currentFrame方法。您需要将目标显式强制转换为MovieClip类:
var mc:MovieClip = MovieClip(event.target);
您可能需要在检查目标的currentFrame的行之前执行此操作,因为“Object”没有currentFrame方法。您需要将目标显式强制转换为MovieClip类:
var mc:MovieClip = MovieClip(event.target);
您可能需要在检查目标的currentFrame的行之前执行此操作,因为“Object”没有currentFrame方法。我建议您在处理事件和目标时使用软强制转换。通过软强制转换,如果捕获了错误的目标,则不会出现问题-强制转换过程只返回
null
public function clicked (e:MouseEvent){
var beetle: TheBeetle = e.target as TheBeetle;
if(beetle != null && beetle.currentFrame <= 2){
//Work with beetle as you want
}
}
单击的公共函数(e:MouseEvent){
变种甲虫:甲虫=e.作为甲虫的目标;
如果(bellet!=null&&bellet.currentFrame我建议在处理事件和目标时使用软强制转换。通过软强制转换,如果捕获了错误的目标,则不会出现问题-强制转换过程只返回null
public function clicked (e:MouseEvent){
var beetle: TheBeetle = e.target as TheBeetle;
if(beetle != null && beetle.currentFrame <= 2){
//Work with beetle as you want
}
}
单击的公共函数(e:MouseEvent){
变种甲虫:甲虫=e.作为甲虫的目标;
如果(bellet!=null&&bellet.currentFrame我建议在处理事件和目标时使用软强制转换。通过软强制转换,如果捕获了错误的目标,则不会出现问题-强制转换过程只返回null
public function clicked (e:MouseEvent){
var beetle: TheBeetle = e.target as TheBeetle;
if(beetle != null && beetle.currentFrame <= 2){
//Work with beetle as you want
}
}
单击的公共函数(e:MouseEvent){
变种甲虫:甲虫=e.作为甲虫的目标;
如果(bellet!=null&&bellet.currentFrame我建议在处理事件和目标时使用软强制转换。通过软强制转换,如果捕获了错误的目标,则不会出现问题-强制转换过程只返回null
public function clicked (e:MouseEvent){
var beetle: TheBeetle = e.target as TheBeetle;
if(beetle != null && beetle.currentFrame <= 2){
//Work with beetle as you want
}
}
单击的公共函数(e:MouseEvent){
变种甲虫:甲虫=e.作为甲虫的目标;
如果(甲虫!=null&&bellet.currentFrame-Hmm,甲虫(e.target)
不等于甲虫的e.target
?如果不等于,返回null比获得异常要好。它们不相等。thebellet(e.target)
将引发异常,如TheBeetle@as6d54sad不能被铸造到SomeAnotherClass@asd5fas5df.这就像是严格的强制转换,但这种类型的强制转换工作得更快。嗯,甲虫(e.target)
不等于甲虫(e.target)
吗?若不是,返回null比得到异常要好。它们不相等。the甲壳虫(e.target)
将引发异常,如TheBeetle@as6d54sad不能被铸造到SomeAnotherClass@asd5fas5df.这就像是严格的施法,但这种类型的施法,效果更快。嗯,是不是《甲虫》(e.target)
等于e.target作为甲虫
?如果不是,返回null比获取异常要好。它们不相等。甲虫(e.target)
将抛出类似TheBeetle@as6d54sad不能被铸造到SomeAnotherClass@asd5fas5df.这就像是严格的演员阵容,但这种类型的演员阵容,工作得更快。嗯,是不是《甲虫》(e.target)等于e.target作为甲虫
?如果不是,返回null比获取异常要好。它们不相等。甲虫(e.target)
将抛出类似的异常TheBeetle@as6d54sad不能被铸造到SomeAnotherClass@asd5fas5df.这就像严格的演员阵容,但这种类型的演员阵容,工作得更快。