2011-04-05 51 views
0

代碼運行良好,但我遇到的問題是,假設要進入我的答案按鈕的文本框在按鈕本身後面...但是,如果我更改了兩行代碼,答案驗證代碼不會提取哪個答案被點擊(它返回未定義)。這真令人氣憤!按鈕文本出現的代價是知道哪個答案被點擊

尋找「// 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; 
    } 

回答

0

你插入answerSprite.addChild(button);後,你作出這樣的方法調用。

試着把那裏的插入這裏,你會沒事的。

 var answerSprite:Sprite = new Sprite(); 
     var button:Button = new Button(); 
     // make it a button; 
     answerSprite.addChild(button); 
     var answerField:TextField = createText(answer,answerFormat,answerSprite,0,0,450); 
      answerSprite.x = column; 
      answerSprite.y = row; 
+0

試過了,沒有運氣。 =/ – Stradigos 2011-04-06 12:18:44

+0

什麼不行?您沒有看到answerField或驗證不起作用? – 2011-04-06 14:07:53

+0

對不起。沒有驗證。當它返回「event.currentTarget.getChildAt(0).text;」時,我的跟蹤報告回「未定義」 – Stradigos 2011-04-06 15:24:46

0

我需要給該按鈕的名稱,然後使用該名稱來標識的按鈕。

相關問題