在最后一行中,我希望XML函数读取单击按钮的名称并在XML文件中显示相应的标记(标记在XML文件具有相同的按钮名称),或者相反,我将不得不使用函数或者如果语句等于我拥有的按钮数量!这对我来说没有任何意义!如何获取使用(MovieClip)或(Sprite)类创建的按钮的值
stop();
import flash.events.MouseEvent;
import flash.events.Event;
import flash.net.URLLoader;
import flash.display.MovieClip;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
var myVar:String = new String();
//var myFrame:Array=new Array(26);
var words:Array =['Amon','Ahmos','Ramsis'];//the words
for (var j:int=0; j<words.length; j++)
{
var word:MovieClip = CreatTextButton(words[j]);//loop in myDictionary and name each button with a different name
addChild(word);
word.x = 130;
word.y = 16 + (j * 30);// to change the position of each word
word.addEventListener(MouseEvent.CLICK,onWordClick);
function CreatTextButton(label:String):MovieClip //creat buttons
{
var txt:TextField = new TextField();
txt.defaultTextFormat = new TextFormat('Calibri',20,0x000000);
txt.text = label;
txt.autoSize = TextFieldAutoSize.LEFT;
txt.background = txt.border = true;
txt.selectable = false;
var btn:MovieClip = new MovieClip();
btn.label=label;
btn.mouseChildren = false;
btn.addChild(txt);
btn.buttonMode = true;
myVar=label.valueOf();
trace(myVar);
return btn;
}
function onWordClick(event:MouseEvent)
{
var myLoader:URLLoader= new URLLoader();
myLoader.load(new URLRequest("1.xml"));
myLoader.addEventListener(Event.COMPLETE,loadXML);
var label:String = event.currentTarget.label;
trace(label);
}
function loadXML(e:Event)
{
var myxml:XML = new XML(e.target.data);
mydata.text += String(myxml.label)+"\n";
}
}
我的XML是
<Pharaohs>
<Ahmos id='_1'>
reigned c. 1539–14 bce and founder of the 18th dynasty
</Ahmos>
<Amon id='_2'>
The chief deity of the Egyptian Empire
</Amon>
<Ramsis id='_3'>
The third Pharaoh of the 19th dynasty
</Ramsis>
</Pharaohs>
对不起,我是如此缓慢和愚蠢:d
有很多的东西,使你的代码难以遵循。这里有几点建议:1.不要将函数放入循环中,或者将函数放入其他函数中。 2.更准确地命名事物,例如'myDictionary'是一个数组,而不是一个字典,这是令人困惑的。 'getTextButton2'可以被称为'createTextButton'。 'Vocabulary'可以被称为'onWordClick'或'loadVocabularyForWord'什么的。 'myVar'特别没有意义。 3。使用文字而不是'new'关键字,例如:'var words:Array = []'4.从逻辑上说,你的'myVar'不需要在那里。 – Aaron
@Aaron Thanx你的答复,似乎我有很多问题要解决,我做了关于命名函数的工作人员,但我想问一下将函数放在for循环或另一个函数内,我想这是唯一的方法去做我想做的这段代码,有什么建议? –
当然可以在for循环之外编写函数。我将添加一个答案... – Aaron