【问题标题】:AS3.0: Copy MovieClip from array to StageAS3.0:将 MovieClip 从数组复制到舞台
【发布时间】:2011-11-29 16:58:07
【问题描述】:

我有一个包含四个不同影片剪辑的数组:

var myEnemy_1:Enemy_1;
var myEnemy_2:Enemy_2;
var myEnemy_3:Enemy_3;
var myEnemy_4:Enemy_4;

var enemyArray:Array = [new Enemy_1(stage), new Enemy_2(stage), new Enemy_3(stage), new Enemy_4(stage)];

现在我想每秒钟挑选一个影片剪辑并将其放在我的舞台上。

var myTimer:Timer = new Timer(1000, 1000);
var randomNumber:int;

myTimer.addEventListener("timer", timedFunction);

function timedFunction(myTime:Event):void {

randomNumber = Math.random()*4;
stage.addChild(enemyArray[randomNumber]);
enemyArray[randomNumber].x = stage.stageWidth;
enemyArray[randomNumber].y = Math.random()*(stage.stageHeight - 50) + 10;
enemyArray.push(enemyArray[randomNumber]);

}

myTimer.start();

在每个 MovieClips 自己的类中,我让它们快速拍摄;

x -= Math.random()*4+1;

除了当一个movieclip在舞台上并且randomNumber从数组中获得相同的movieclip之外,一切都很好,movieclip从stage中删除并再次添加(在其起始位置)。

我想要它做的是让影片剪辑出现在舞台上,然后添加另一个副本,因此舞台上有两个相同的影片剪辑。

希望有人对此有答案,或解决方法 =) 非常感谢!

【问题讨论】:

    标签: arrays actionscript-3 movieclip stage


    【解决方案1】:

    如果您真的想要同一类的新副本,则需要创建一个新实例。所以:

    var enemyArray:Array = [Enemy_1, Enemy_2, Enemy_3, Enemy_4];
    
    function timedFunction(myTime:Event):void { 
       randomNumber = Math.random()*4; 
       var enemy:AbstractEnemy = new enemyArray[randomNumber](stage);
       stage.addChild(enemy);
       enemy.x = stage.stageWidth;
       enemy.y = Math.random()*(stage.stageHeight - 50) + 10;
       someOtherArray.push(enemy);  //don't want to add this to your array of Class definitions
    } 
    

    但是,您可能还想在 Google 上搜索块传输和对象池以了解其他更有效的技术。

    【讨论】:

    • 谢谢!完美运行。我也会看看 blitting 和对象池 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2016-09-26
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多