1
我將如何更改actionscript代碼以使測驗能夠從更長的列表中呈現一組隨機答案?例如,我可以將測驗僅包含來自包含12個答案的XML文件的4個隨機答案作爲標記嗎?如何從更大的答案陣列添加到第四階段的數學隨機答案?
我可以把所有的12個答案放在所有的標誌出來,並在問題文本字段中只有一個問題女巫是其中一個標誌的名稱,但不知道如何隨機得到只有四個標誌並把它們在舞臺上,並在文本字段
XML示例名稱之一:
<flags>
<flag path="../assets/flags/flag1.png">
<country>
Aeland
</country>
</flag>
<flag path="../assets/flags/AmSamoa.png">
<country>
AmSamoa
</country>
</flag>
<flag path="../assets/flags/Bahamas.png">
<country>
Bahamas
</country>
</flag>
<flag path="../assets/flags/CostaRica.png">
<country>
Costa Rica
</country>
</flag>
<flag path="../assets/flags/CotedIvorie.png">
<country>
Cotedivoire
</country>
</flag>
<flag path="../assets/flags/Croatia.png">
<country>
Croatia
</country>
</flag>
我的AS3代碼:
private function onXMLLoad(event:Event):void
{
_xml = new XML(event.target.data); //create XML document_xmlLoader.removeEventListener(Event.COMPLETE, onXMLLoad);
_myFlagList = new XMLList(_xml.flag);
_xmlLoader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
// _xml.ignoreWhitespace = false;
// trace("MyFlag: _answers: ",_answers);
//trace(_loader);
//trace(targetBtn);
//trace(_myFlagList);
for each (var flagPath:XML in [email protected])
{
trace("MyFlag: flagaths: ",flagPath);
_flagPaths.push(flagPath);
}
for each (var flag:XML in _xml.flag.country)
{ //trace("MyFlag: flagaths: ",flag);
_allFlags.push(flag);
}
createButtons();
}
private function onIOError(event:IOErrorEvent):void
{
_xmlLoader.removeEventListener(Event.COMPLETE, onXMLLoad);
_xmlLoader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
trace('IO Error:', event.text);
}
private function createButtons():void
{
var col:int;
var row:int;
flagContainer = new Sprite();
trace("Number of flags",_allFlags.length);
for (var i:int = 0; i < NUMBER_OF_BTNS; i++)
{
_answers.push(_allFlags[i]);
targetBtn = new FlagButton(_allFlags[i],_flagPaths[i]);
targetBtn.x = col * (targetBtn.width + 10)+20;
targetBtn.y = row * (targetBtn.height+ 10)+20;
flagContainer.addChild(targetBtn);
addChild(flagContainer);
col++;
if(col == 3)
{
col = 0;
row++;
}
}
randomOption();
}
private function randomOption():void
{
trace("MyFlag: all flags: ", _allFlags);
flagToFind = _allFlags[Math.floor(Math.random() * _allFlags.length)];
trace("MyFlag: flag to find: ", flagToFind);
_bk.text.text=flagToFind;
}
非常感謝您的開關輸入, – Herbert3009
謝謝你的回答,它幫助了很多,一個問題,它給我的只有兩個對象,但如果我想有四個對象所有的時間?你怎麼做,同時我想顯示他們在一個invosoble按鈕,預先感謝您的時間 – Herbert3009
好吧,我已經展示瞭如何訪問一個單一的對象中選出的四個,使用這種技術來訪問所有其中。關於這個按鈕,你需要在其中創建四個地方,以便每個地方都可以接受這種類型的對象,然後分配或者使用addChild()或chenge文本或任何你認爲合適的東西。 – Vesper