2015-03-30 45 views
0

我想从AS2采取一个较旧的教程星域,并将其移植到AS3。我不再收到任何编译器错误,但我得到TypeError获取类型错误#1123:过滤器运算符不支持类型,MainTimeline/enterFrameHandler()

下面是代码:

this.addEventListener(Event.ENTER_FRAME, enterFrameHandler); 

import flash.display.MovieClip; 
import flash.events.Event; 

var stars = 100; 
var maxSpeed = 16; 
var minSpeed = 2; 

for(var i = 0; i<stars; i++) 
{ 
    var mc:MovieClip = new MovieClip(); 
    addChild(mc); 
    mc.name = "star","star"+i,i; 
    mc.x = Math.random() * stage.stageWidth; 
    mc.y = Math.random() * stage.stageHeight; 
    mc.speed = Math.random() * (maxSpeed-minSpeed)+minSpeed 
    var size = Math.random() * 2+(0.6*(Math.random() * 4)); 
    mc.width = size; 
    mc.height = size; 
} 

function enterFrameHandler(event:Event):void 
{ 
    var target:MovieClip = MovieClip(event.target); 
    for (var j = 0; j<stars;j++) 
    { 
     var mc = this.("star"+j); 
     if (mc.y>0) 
     { 
      mc.y -= mc.speed; 
     } 
     else 
     { 
      mc.y = stage.stageHeight; 
      mc.speed = Math.random() * (maxSpeed-minSpeed)+minSpeed; 
      mc.x = Math.random() * stage.stageWidth; 

     } 
    } 
}; 

TypeError我得到的是:

TypeError: Error #1123: Filter operator not supported on type SpaceBoost_loadscreen_star_fla.MainTimeline. at SpaceBoost_loadscreen_star_fla::MainTimeline/enterFrameHandler()

我很新在ActionScript编码,和我刚开始学习,我去。 此外,如何清理它的任何有用的建议也欢迎!

问题1:

在你的第一个for循环,这一行:mc.name = "star","star"+i,i;

每个项目的名称将最终成为该

+0

您是否找到解决问题的方法? – BadFeelingAboutThis 2015-04-23 22:40:19

回答

0

两个问题看一眼后,我看到相同(“星”),因为在逗号后它只是一个字符串文字命令(假设这不会引发错误)。

通过这个改变来纠正:

mc.name = "star" + i; 

问题2

什么是抛电流误差,var mc = this.("star"+j); 在AS3,object.(expression)是E4X过滤。要通过实例名访问对象,而不是做如下:

var mc = getChildByName("star" + j); 

我在这荒废了,所以让我知道,如果不解决您的问题。

+0

非常感谢您的帮助!我改变了这些部分,但现在我得到一个新的错误:TypeError:错误#1006:值不是一个函数。 在SpaceBoost_loadscreen3_star_fla :: MainTimeline/enterFrameHandler()所以肯定有一个问题,我如何处理事件enterframehandler – Maria 2015-03-30 21:38:44

+0

我在Issue2部分建议的代码做了一点点更新。如果调试并显示引发错误的实际行,这将会很有帮助。 – BadFeelingAboutThis 2015-03-30 22:13:22

+0

这就是问题所在,我的编译器没有显示有任何问题。但星星没有填充,并且在输出部分出现类型错误。根据我所查找的内容,它似乎是一个运行时错误(#1006),它似乎不能识别我的EventListener作为函数。也许第一行的API处理不正确?另一个问题可能是我没有正确调用对象,但一切似乎拼写正确....嗯 – Maria 2015-03-31 15:07:21

相关问题