2010-03-03 6 views
0

Comment charger des objets de bibliothèque par liste de chaînes en utilisant Flash et AS3?
Je dois mieux comprendre les listes de chaînes, les tableaux et les sprites.charger des objets de bibliothèque par liste de chaînes, AS3

QU'EST-CE QUE JE VEUX FAIRE
ennemis de charge à l'étape en utilisant une liste de chaînes « boule orange, boule rouge, boule verte etc »

EXPLICATION
Les tutoriels que j'ai donné sont trop basique, ou sont incomplets des exemples qui n'expliquent pas les classes utilisées.

Les instructions de trace ne me montrent pas comment j'accède au nom ou à la classe d'un objet. J'ai besoin d'exemples. Classes non emballées préférées. Merci.

CE QUE JE TRAVAILLE OBTENU « Je savais que je confonds la classe et le nom »
propriétés du symbole
nom est ils pas le nom spécifique, j'appelle le mien noname »
classe est 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

PRÉCÉDENT MODIFIÉ

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 
//} 

PLUS S'IL VOUS PLAÎT POST MATRICE STUFF

Répondre

1

Ce que je ferais dans cette situation est d'utiliser juste un tableau ordinaire. Déclarez-le comme ceci:

var enemyArray:Array = new Array(); 

Ensuite, il est prêt à accepter des objets. Ensuite, créez une boucle, un peu comme vous l'avez fait, d'ajouter autant d'ennemis que vous voulez le tableau et leur donner quelques informations de position, et aussi pour les ajouter à la scène:

//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 
} 

Cela mis 10 objets ennemis (que vous devrez définir, je suppose que vous savez comment lier une nouvelle classe à un objet dans la bibliothèque de l'IDE Flash?) Sur la scène. De là, vous avez le tableau peuplé de ces ennemis, et vous pouvez le parcourir pour les déplacer, faire la détection de collision sur eux, les tuer et les retirer de la scène, etc

La façon dont vous l'avez fait semble les mettre dans un objet selon leurs noms, ce qui est également faisable, je suppose. Je ne vois pas pourquoi vous auriez nécessairement besoin d'y accéder par son nom, auquel cas la méthode Array le simplifie quelque peu. Notez également que ceci ne charge pas les ennemis à l'étape en utilisant une liste de chaînes, car ce n'est pas vraiment nécessaire - à moins que vous n'ayez d'abord placé les emplacements de fichiers d'un tas d'images sur votre HD (à utiliser comme sprites de jeu) dans un tableau en tant que chaînes; puis ensuite for-looping à travers pour les charger à la scène.

J'espère que cela aide, laissez-moi savoir si vous avez d'autres questions, ou si ce n'est pas la réponse que vous cherchiez.

+0

Cela semble correct. J'ai fait deux symboles et ai inversé le nom et la classe pour m'assurer. Pas d'erreur, ça ne montre rien. consultez mon lien. http://videodnd.weebly.com/ –

+0

Oui, comme je l'ai dit, vous devez savoir comment lier un objet dans Flash à un nom de classe. Faites un clic droit sur votre objet 'ennemi' dans la bibliothèque Flash, et cliquez sur 'propriétés'. Ensuite, assurez-vous que 'export for ActionScript' est coché, et mettez un nom (en commençant par une majuscule) dans la case 'Class' - disons Badguy. Appuyez sur OK, il vous donnera un avertissement disant qu'il ne peut pas trouver une définition pour le chemin de la classe, car vous n'avez pas créé de fichier .AS réel pour cela - mais cela n'a pas d'importance pour l'instant. Une fois que vous avez fait cela, changez la ligne: var ennemi: Sprite = new Sprite(); à var ennemi: Badguy = nouveau Badguy(); Cela va le mettre en scène. – debu

+0

Je vais vérifier les propriétés/classe à nouveau, merci. –