J'essaie de créer une zone de liste déroulante (à partir de la liste des composants dans flash cs4). Je l'ai obtenu à travailler avecHistorique de la zone de liste déroulante dans as3
import fl.accessibility.ComboBoxAccImpl;
import fl.data.DataProvider;
import fl.events.ComponentEvent;
ComboBoxAccImpl.enableAccessibility();
var weapons:Array = [
{label:"Sword", data:"SwordSelected"},
{label:"Bow", data:"BowSelected"},
{label:"Knife", data:"KnifeSelected"}];
testtxt.text = String("sword");
weaponselector.dataProvider = new DataProvider(weapons);
weaponselector.addEventListener(ComponentEvent.ENTER, weaponsadd);
weaponselector.addEventListener(Event.CHANGE, weaponboxselecter);
function weaponboxselecter(event:Event):void
{
if (ComboBox(event.target).selectedItem.data != "SwordSelected")
{
selectSword();
testtxt.text = String(ComboBox(event.target).selectedItem.label);
}
else if (ComboBox(event.target).selectedItem.data != "BowSelected")
{
selectBow();
testtxt.text = String(ComboBox(event.target).selectedItem.label);
}
else if (ComboBox(event.target).selectedItem.data != "KnifeSelected")
{
selectKnife();
testtxt.text = String(ComboBox(event.target).selectedItem.label);
}
}
mais je tryed pour créer une histoire si ce qui est cliqué (selectKnife/selectBow/selectSword dans la fonction weaponboxselecter)
var weaponsHistory:Array = ["Sword"];
trace(weaponsHistory);
function selectBow()
{
var Bowadds:Bowadd = new Bowadd();
Bowadds.x = 300
Bowadds.y = 300
stage.addChild(Bowadds);
trace(weaponsHistory);
weaponsHistory.splice(1, "Bow");
}
function selectKnife()
{
var Knifeadds:Bowadd = new Bowadd();
Knifeadds.x = 300
Knifeadds.y = 300
stage.addChild(Knifeadds);
weaponsHistory.splice(1, "Knife");
trace(weaponsHistory);
}
function selectSword()
{
var Swordadds:Bowadd = new Bowadd();
Swordadds.x = 300
Swordadds.y = 300
stage.addChild(Swordadds);
weaponsHistory.splice(1, "Sword");
trace(weaponsHistory);
}
mais toujours des traces épée
des suggestions
grâce
[nouveau code]
var weaponsHistory:Array = ["Sword"];
function weaponboxselecter(event:Event):void{
if(ComboBox(event.target).selectedItem.data != "SwordSelected"){
selectSword();
testtxt.text = String(ComboBox(event.target).selectedItem.label);
weaponsHistory.splice(0,0,"Sword");
}else if(ComboBox(event.target).selectedItem.data != "BowSelected"){
selectBow();
testtxt.text = String(ComboBox(event.target).selectedItem.label);
weaponsHistory.splice(0,0,"Bow");
}else if(ComboBox(event.target).selectedItem.data != "KnifeSelected"){
selectKnife();
testtxt.text = String(ComboBox(event.target).selectedItem.label);
weaponsHistory.splice(0,0,"Knife");
}
[new code]
trace(weaponsHistory);// just less code
[end new code]
}
cela ne fonctionne toujours pas. Je vais l'expliquer un peu mieux:
L'épée est d'abord sélectionnée. Puis, lorsque je clique sur l'archet/couteau, l'épée est remplacée par un arc/couteau. De cette façon, je peux ajouter et supprimer des objets en fonction de ce qui a été cliqué en dernier (si vous avez une autre façon de faire cela, je suis prêt pour d'autres options.)
Ce qui se passe est que l'épée est tracée que si je clique sur couteau, l'épée est tracée et si je clique sur l'arc, l'épée est tracée, mais si le clic sur l'épée ou le couteau à nouveau que l'arc est tracée.
grâce
[nouveau Code]
function selectBow(){
var Bowadds:Bowadd = new Bowadd();
Bowadds.x = 300
Bowadds.y = 300
stage.addChild(Bowadds);
trace(weaponsHistory);
}
function selectKnife(){
var Knifeadds:Bowadd = new Bowadd();
Knifeadds.x = 300
Knifeadds.y = 300
stage.addChild(Knifeadds);
trace(weaponsHistory);
}
function selectSword(){
var Swordadds:Bowadd = new Bowadd();
Swordadds.x = 300
Swordadds.y = 300
stage.addChild(Swordadds);
trace(weaponsHistory);
}
function weaponsadd(event:ComponentEvent):void {
var newRow:int = 0;
if (event.target.text == "Add") {
newRow = event.target.length + 1;
event.target.addItemAt({label:"screen" + newRow, data:"screenData" + newRow},
event.target.length);
}
}
function weaponboxselecter(event:Event):void{
if(ComboBox(event.target).selectedItem.data != "SwordSelected"){
selectSword();
testtxt.text = String(ComboBox(event.target).selectedItem.label);
weaponsHistory.push("Sword");
}else if(ComboBox(event.target).selectedItem.data != "BowSelected"){
selectBow();
testtxt.text = String(ComboBox(event.target).selectedItem.label);
weaponsHistory.push("Bow");
}else if(ComboBox(event.target).selectedItem.data != "KnifeSelected"){
selectKnife();
testtxt.text = String(ComboBox(event.target).selectedItem.label);
weaponsHistory.push("Knife");
}
}
Il fonctionne tous, sauf pour le couteau. Il ne fait que tracer l'épée ...
Pourquoi le downvote? –
n'était pas moi en fait cela est très utile – thor625
il a égalisé – thor625