1

この機能を使用すると、複数の選択肢の質問と回答が表示されます。しかし、ユーザーがA、B、C、D、Eの「回答オプション」をクリックしたときに、このhttp://www.cambridge.org/other_files/Flash_apps/inuse/EVUElementaryTest/EVUElementaryIndex.htmのようなオプションの文字の周りに円が必要です。 。これは可能ですか?

            function showQuestions(index,limit ):void{

                var mainContainer:Sprite = new Sprite();
                mainContainer.name="qContainer";
                //mainContainer.graphics.beginFill(0xffffff);
                mainContainer.graphics.drawRect(0,0,700, 500);
                mainContainer.x=(stage.stageWidth - 700) /2;
                mainContainer.y=(stage.stageHeight - 500) /2;
                addChild(mainContainer);



                for (i=index; i < (index+limit); i++) {


                    var questionTextField = new TextField();
                    mainContainer.addChild(questionTextField);

                    questionTextField.text=i + "  " +  qnodes[i].QUESTION.text();
                    questionTextField.name=i;
                    questionTextField.width=400;
                    questionTextField.x= 0;
                    questionTextField.y=i%limit * 100;

                    var numberOfAnswers= (qnodes[i].OPT.length())
                    var j:Number;


                    for (j=0; j < numberOfAnswers; j++) {

                        var answerTextField = new TextField();
                        mainContainer.addChild(answerTextField);


                        var optionLetterMc = new MovieClip();


                        optionLetterMc.name="Answer"+i;
                        optionLetterMc.x=((j%3) * 250)   ;
                        optionLetterMc.y= (i%limit * 100) + 20 + (int(j / 3) * 20) ;
                        optionLetterMc.addEventListener(MouseEvent.CLICK, OnAnswerSelected);
                        optionLetterMc.addEventListener(MouseEvent.CLICK, saveStudentAnswer);
                        mainContainer.addChild(optionLetterMc);

                        var optLetterTextField = new TextField();
                        optionLetterMc.addChild(optLetterTextField);
                        optLetterTextField.text=optionLetters[j];
                        optLetterTextField.name=i;




                        answerTextField.autoSize = TextFieldAutoSize.LEFT;
                        answerTextField.x=((j%3) * 250) + 20 ;
                        answerTextField.y=  (i%limit * 100) + 20 + (int(j / 3) * 20) ;
                        answerTextField.text=qnodes[i].OPT[j].text();

                    }
                }

                    var btn:Button = new Button();
                    btn.label = "Next";
                    btn.x=(stage.stageWidth - 300) /2;
                    btn.y=500;
                    mainContainer.addChild(btn);
                    btn.addEventListener(MouseEvent.CLICK, nextQuestions);

            }

更新:行った変更:optionLetterMcを作成てから、内部にoptionTextFieldを追加しました。それらはoptionLetterMc.name="Answer"+i;として名前が付けられます。

これがあなたの部分です(少し変更されました)。

 var mSelectedAnswer:MovieClip;

 Mouse.hide();
 Pencil.mouseEnabled = false;

 stage.addEventListener(MouseEvent.MOUSE_MOVE, OnMouseMove);
 //Answer1.addEventListener(MouseEvent.CLICK, OnAnswerSelected);

 function OnMouseMove(e:MouseEvent):void
  {
 Pencil.x = stage.mouseX;
 Pencil.y = stage.mouseY;
  }


  function OnAnswerSelected(e:MouseEvent):void
  {

mSelectedAnswer = e.currentTarget as MovieClip;
DeselectAll();
stage.removeEventListener(MouseEvent.MOUSE_MOVE, OnMouseMove);
Pencil.addEventListener(Event.ENTER_FRAME, OnAnswerEnterFrame);
Pencil.gotoAndPlay("Draw_Circle");
//trace(mSelectedAnswer.name);
}

function OnAnswerEnterFrame(e:Event):void
{
if(e.target.currentFrame == e.target.totalFrames)
{

    trace(mSelectedAnswer.name);
    mSelectedAnswer.gotoAndStop("Selected");
    Pencil.removeEventListener(Event.ENTER_FRAME, OnAnswerEnterFrame);
    stage.addEventListener(MouseEvent.MOUSE_MOVE, OnMouseMove);
}
}

function DeselectAll():void
{
mSelectedAnswer.gotoAndStop("Normal");

}
4

1 に答える 1

1

最も簡単な方法は、鉛筆の動きのアニメーションを作成し、それに応じて鉛筆でアニメーションにラベルをMovieClip付け、最初のフレームで停止することです。次に、座標を必要な座標に変更して、次のようにします。

Pencil_MovieClip.addEventListener(Event.ENTER_FRAME, onPencilEnterFrame);
Pencil_MovieClip.gotoAndPlay("DrawCircle");

function onPencilEnterFrame(e:Event):void 
{
    if(Pencil_MovieClip.currentFrame == Pencil_MovieClip.totalFrames) 
    {
        DeselectAllAnswers();
        ClickedAnswer_MovieClip.gotoAndStop("selected");
        Pencil_MovieClip.removeEventListener(Event.ENTER_FRAME, onPencilEnterFrame);
    }
}

鉛筆アニメーションの終了に反応するには、フレーム入力イベントリスナーが必要です。アニメーションが終了したら、選択可能な回答MovieClipを「選択済み」というラベルの付いた別のフレームに移動します。このフレームには、その円のグラフィックがあります。

DeselectAllAnswers関数は、選択可能なすべての回答に対して、選択サークルがないデフォルトのフレームに移動するように指示するだけです。

ClickedAnswer_MovieClipは、MovieClipクリックされた選択可能な回答の1つだと思います。

編集:私が書いたこのコードはすべてMovieClip、ちなみに選択可能な回答クリックハンドラーです。

編集2:私の説明が十分でない場合は、ここに私がまとめた例があります:リンク

于 2013-01-06T23:54:29.107 に答える