我遵循本教程http://www.flash-game-design.com/flash-tutorials/dynStar-flash-tutorial.html。我一直收到不明方法的错误,
这是我的代码,
var stars = 100;
var maxSpeed = 16;
var minSpeed = 2;
for(var i = 0; i<stars; i++){
var mc = this.attachMovie("star", "star"+i,i);
mc._x = random(Stage.width);
mc._y = random(Stage.height);
mc.speed = random(maxSpeed-minSpeed)+minSpeed
var size = random(2)+0.6*(random(4));
mc._width = size;
mc._height = size;
}
this.onEnterFrame = function(){
for(var j=0; j<stars;j++){
var mc = this["star"+j];
if (mc._y>0){
mc._y -= mc.speed ;
} else{
mc._y = stage.height;
mc.speed = random(maxSpeed-minSpeed)+minSpeed
mc._x = random(Stage.width);
}
}
}
答案 0 :(得分:0)
也许您没有正确地将您的影片剪辑链接到库中,以使实例/标识符名称为“星号”,在这种情况下请查看该教程的第一部分。
另一种可能性是“随机”方法实际上已被弃用,因此根据您的Flash播放器版本,它可能无效。请尝试使用Math.random。
答案 1 :(得分:0)
实际上问题是该教程是AS2,并且很多代码都没有转换为as3。最重要的是用Math.random()替换“随机”,attachMovie&amp;带有DisplayObjectContainer类的event.enterFrame,带有x&amp;的_x&amp; _y年。
我已经更新了大部分代码,我唯一的问题是我不知道如何处理这一行:
var mc = this.attachMovie(“star”,“star”+ i,i);
我知道我需要创建一个变量和addChild,但我不确定如何从一个生成多个影片剪辑。我认为addChild只能用于1件事。所以如何解决这个工作的任何帮助都会很棒。我去的时候只是想自学。
目前已更新为:
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 = this.attachMovie("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;
}
}
};