按字符串列表,AS3加载库对象

时间:2010-03-03 16:19:07

标签: flash actionscript-3

如何使用Flash和AS3按字符串列表加载库对象?
我需要更好地理解字符串列表,数组和精灵。

我想做什么
使用字符串列表“橙色球,红球,绿球等”将敌人加载到舞台上

说明
我给出的教程太基础了,或者说它们不完整 示例不解释正在使用的类。

跟踪语句没有告诉我如何访问对象的名称或类。 我需要例子。非打包类是首选。谢谢。

我的工作原理“我知道我会把课程和名称混为一谈”
符号属性
名字是他们不是特定名称,我称之为noname“
class是 Pyramid

//Creates 10 enemies and trace statement
import flash.display.Sprite;
var sprites:Array = new Array();
for(var i:Number=0;i<10;i++){
    //var test:Sprite = new Sprite();
    var test:Pyramid = new Pyramid();
        sprites.push(test);
    addChild(test);
    test.name = "littlebox_"+ i
    trace(test.name)
    with(test){

        x=i*25;

       }
}

/////////////////////////////////////////////////////////////////////// 

/*debu's example*/
//Creates 10 enemies 
var enemyArray:Array = new Array(); 

for (var i:int = 0; i < 10; i++) 
{ 
   var noname:Pyramid = new Pyramid(); 
   noname.x = i*10; //this will just assign some different x and y value depending on i. 
   noname.y = i*11; 
   enemyArray.push(noname); //put the enemy into the array 
   addChild(noname); //puts it on the stage 
}

///////////////////////////////////////////////////////////////////////

//centered and trace statement
var sprite:Sprite;
var noname:Pyramid = new Pyramid; 
//var noname:Pyramid2 = new Pyramid2; 
sprite = new Sprite();
sprite.name = "Pyramid" + 1;
addChild( noname);
noname.x = stage.stageWidth/3;
noname.y = stage.stageHeight/3;
trace( getChildByName( "Pyramid" + 1 ) ); // [object Sprite]

alt text http://www.ashcraftband.com/myspace/videodnd/so___.jpg

以前修改

var enemyList:Object = new Object();
        //var enemy:Sprite = new Sprite();
var enemy:BadGuy = new BadGuy();
enemy.name = "BadGuy";
enemyList [enemy.name] = enemy;

//var enemyList:Object = new Object();  
//for (var i:int = 0; i < 10; i++) {
        //var enemy:Sprite = new Sprite(); 
//var enemy:BadGuy = new BadGuy(); 
//enemy.name = "BadGuy" + i;  
//enemyList [enemy.name] = enemy;  
//}  

//for (var i:String in enemyList){  
//var enemy:Sprite = enemyList[i]  
//do something to enemy sprite  
//}

请发布更多ARRAY STUFF

1 个答案:

答案 0 :(得分:1)

在那种情况下我要做的只是使用一个普通的数组。声明如下:

var enemyArray:Array = new Array();

然后就可以接受对象了。然后创建一个for循环,就像你已经完成的那样,在阵列中添加任意数量的敌人并给它们一些位置信息,并将它们添加到舞台上:

//Creates 10 enemies
for (var i:int = 0; i < 10; i++)
{
   var enemy:Sprite = new Sprite();
   enemy.x = i*10; //this will just assign some different x and y value depending on i.
   enemy.y = i*11;
   enemyArray.push(enemy); //put the enemy into the array
   addChild(enemy); //puts it on the stage
}

这将在舞台上放置10个敌人对象(您需要定义,我假设您知道如何将新类链接到Flash IDE库中的对象?)。从这里你可以使用这些敌人填充阵列,你可以循环移动它们,对它们进行碰撞检测,杀死它们并将它们从舞台上移除等等。

你这样做的方式似乎是根据他们的名字将它们放入一个对象中,我猜也是如此。我不明白为什么你一定需要通过名称访问它们,在这种情况下,Array方式稍微简化了它。

另请注意,这不会将敌人加载到舞台使用字符串列表,因为这不是必需的 - 除非您是第一次将一堆图像的文件位置放在您的HD上(作为游戏精灵使用)作为字符串的数组;然后循环通过它将它们加载到舞台上。

我希望这会有所帮助,如果您有任何其他问题,请告诉我,或者这不是您要找的答案。