如何使用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
//}
答案 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上(作为游戏精灵使用)作为字符串的数组;然后循环通过它将它们加载到舞台上。
我希望这会有所帮助,如果您有任何其他问题,请告诉我,或者这不是您要找的答案。