代碼運行良好,但我遇到的問題是,假設要進入我的答案按鈕的文本框在按鈕本身後面...但是,如果我更改了兩行代碼,答案驗證代碼不會提取哪個答案被點擊(它返回未定義)。這真令人氣憤!按鈕文本出現的代價是知道哪個答案被點擊
尋找「// INSERT HERE」行。如果我接受該行,「var answerField:TextField = createText(answer,answerFormat,answerSprite,0,0,450);」並把它放在那裏,它會返回正確的答案(不返回undefined),但我不能再看到文本。我也包含了createText函數。
想法?
private function askQuestion()
{
trace("asking question...");
// prepare new question sprite
qBox = new QuestionBox();
questionSprite = new Sprite();
gameSprite.addChild(qBox);
gameSprite.addChild(questionSprite);
qBox.x = 240;
qBox.y = 45;
// create text field for question
var question:String = dataXML.item[questionNum].question;
questionField = createText(question,questionFormat,questionSprite,120,30,250);
// create sprite for answers, get correct answer and shuffle all
correctAnswer = dataXML.item[questionNum].answers.answer[0];
trace("----" + correctAnswer + "----");
answers = shuffleAnswers(dataXML.item[questionNum].answers);
// put each answer into a new sprite with a circle icon
answerSprites = new Sprite();
for (var i:int=0; i<answers.length; i++)
{
trace("generating answers...");
switch (i)
{
case 0 :
column = 135;
row = 150;
break;
case 1 :
column = 135;
row = 260;
break;
case 2 :
column = 340;
row = 150;
break;
case 3 :
column = 340;
row = 260;
break;
}
var answer:String = answers[i];
var answerSprite:Sprite = new Sprite();
//INSERT HERE
var button:Button = new Button();
answerSprite.x = column;
answerSprite.y = row;
// make it a button;
answerSprite.addChild(button);
var answerField:TextField = createText(answer,answerFormat,answerSprite,0,0,450);
answerSprite.addEventListener(MouseEvent.CLICK,clickAnswer);
answerSprite.buttonMode = true;
answerSprites.addChild(answerSprite);
}
trace("answers generated!");
questionSprite.addChild(answerSprites);
trace("question asked!");
trace(":::awaiting user input:::");
}
createText功能:
public function createText(text:String, tf:TextFormat, sprite:Sprite, x,y: Number, width:Number):TextField
{
var tField:TextField = new TextField();
tField.x = x;
tField.y = y;
tField.width = width;
tField.wordWrap = true;
tField.multiline = true;
tField.selectable = false;
tField.defaultTextFormat = tf;
tField.text = text;
sprite.addChild(tField);
return tField;
}
試過了,沒有運氣。 =/ – Stradigos 2011-04-06 12:18:44
什麼不行?您沒有看到answerField或驗證不起作用? – 2011-04-06 14:07:53
對不起。沒有驗證。當它返回「event.currentTarget.getChildAt(0).text;」時,我的跟蹤報告回「未定義」 – Stradigos 2011-04-06 15:24:46