![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1 05.06.13]
Регистрация: Mar 2013
Сообщений: 42
|
Здравствуйте, имеется код:
<?xml version="1.0" encoding="UTF-8"?>
<myList>
<excercise>
<question>2 x 2?</question>
<answer>4</answer>
</excercise>
</myList>
package { import flash.net.URLLoader; import flash.net.URLRequest; import flash.xml.*; import flash.events.Event; import flash.display.Loader; public class Main extends MovieClip { var myFile:String; var xmlLoader:URLLoader; var myList:XML; public function Main() { myFile = "myList.xml"; loadXml(); } function loadXml():void { xmlLoader = new URLLoader(new URLRequest(myFile)); xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded); } function xmlLoaded(event:Event):void { myList = new XML(event.target.data); myList.ignoreWhite = true; questionTxt.text = myList.excercise[0].question; checkBtn.addEventListener(MouseEvent.CLICK, checkAnswer) } function checkAnswer (event:MouseEvent) : void { if (answerTxt.text == myList.excercise[0].answer) { trace ("correct"); } else { trace ("wrong"); } } } } Добавлено через 1 час 37 минут Пробовал так, что то не выходит: for (var i:uint = 0; i < NUM_QUESTIONS; i++) { questionTxt.text = myList.excercise[i].question; checkBtn.addEventListener(MouseEvent.CLICK, checkAnswer); } Попробовал так: package { import flash.display.*; import flash.net.*; import flash.xml.*; import flash.text.*; import flash.events.*; import org.casalib.util.ArrayUtil; public class Main extends MovieClip { var myFile:String; var xmlLoader:URLLoader; var myList:XML; var questionTxt:TextField = new TextField(); var questionNumber:uint = 0; var correctNumber:uint = 0; var correctAnswer:String; var randomAnswer:Array; const NUM_QUESTIONS:uint = 3; public function Main() { right = new Sprite(); addChild(right); myFile = "myList.xml"; loadXml(); } function loadXml():void { xmlLoader = new URLLoader(new URLRequest(myFile)); xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded); } public function randomiseArray(answers:XMLList):Array { var rArray:Array = new Array(); for (var i:uint = 0; i < NUM_QUESTIONS; i++) { rArray.push(answers[i]); } return ArrayUtil.randomize(rArray); } function nextQuest ():void { correctAnswer = myList.excercise[questionNumber].answer[0]; randomAnswer = randomiseArray ( myList.excercise[questionNumber].answer.children() ); questionTxt.type = "dynamic"; questionTxt.width = 208; questionTxt.height = 32; questionTxt.x = 196; questionTxt.y = 101; addChild(questionTxt); questionTxt.text = myList.excercise[questionNumber].question; for (var i:uint = 0; i < NUM_QUESTIONS; i++) { var answerTxt:TextField = new TextField(randomAnswer[i]); answerTxt.type = "input"; answerTxt.x = 196; answerTxt.y = 301; answerTxt.width = 208; answerTxt.height = 32; answerTxt.background = true; answerTxt.backgroundColor = 0xFFF00; answerTxt.addEventListener(KeyboardEvent.KEY_UP, checkAnswer); addChild(answerTxt); } } function xmlLoaded(event:Event):void { myList = new XML(event.target.data); myList.ignoreWhite = true; totalNr = myList.excercise.length(); nextQuest(); } function checkAnswer (e:KeyboardEvent):void { while (right.numChildren) right.removeChildAt(0); if(correctAnswer == e.target.getChildAt(e.target.numChildren - 1).text) correctNumber++; if (questionNumber == myList.excercise.length()-1) { trace ("wrong"); answerTxt.backgroundColor = 0xFF0000; }else{ trace ("correct"); answerTxt.backgroundColor = 0xFFF00; correctNumber++; nextQuest(); } } } } Задача кода в том, чтобы правильный ответ вводился в answerTxt, и если он правильный то тут же следовал следующий вопрос. Как осуществить, что то не доходит. Последний раз редактировалось AlexTrin; 16.04.2013 в 21:29. |
|
|||||
|
[+4 24.04.13]
[+4 20.04.13] Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
|
так чтоли ?
private var question_id:int = 0; function xmlLoaded(event:Event):void { myList = new XML(event.target.data); myList.ignoreWhite = true; questionTxt.text = myList.excercise[question_id].question; checkBtn.addEventListener(MouseEvent.CLICK, nextAnswer); } function nextAnswer(event:MouseEvent) : void { if(question_id == myList.excercise.length()) { trace('end test'); return; } if (answerTxt.text == myList.excercise[question_id].answer) { question_id++; questionTxt.text = myList.excercise[question_id].question; } } |
|
|||||
|
[+1 05.06.13]
Регистрация: Mar 2013
Сообщений: 42
|
chamele0n, огромное спасибо, все так.
|
|
|||||
|
[+1 05.06.13]
Регистрация: Mar 2013
Сообщений: 42
|
Пытаюсь вывести вопросы из списка случайным образом, что то не выходит.
Народ помогите. |
|
|||||
|
Регистрация: Feb 2013
Сообщений: 176
|
|
|
|||||
|
[+1 05.06.13]
Регистрация: Mar 2013
Сообщений: 42
|
Sync, непомогло
|
|
|||||
|
Регистрация: Feb 2013
Сообщений: 176
|
чего у вас невыходит то? трейс проходит?
|
|
|||||
|
[+1 05.06.13]
Регистрация: Mar 2013
Сообщений: 42
|
Трейс то проходит, а вот вопросы как шли по порядку так и идут, никакой рандомности не появилось.
|
|
|||||
|
Регистрация: Apr 2013
Сообщений: 77
|
Т.к округление идёт в меньшую сторону, то тут должно быть для 3х вопросов следующие промежутки:
1.) [0-1) 2.) (1-2] 3.) [2-3) Если Вы вычитаете из длины единичку, то у Вас получаются вот такая область значений randomIndex: [0; 1) - последний вопрос уже никогда не будет показан. Первые 2 должны появляться. 2). Не забыли поменять тип возвращаемых данных? И вообще, куда он их вернет, если это приёмник? Я конечно не уверен, но по-моему приёмник не возвращает ничего, а просто реагирует на события, Вы же не можете присвоить значение какой-нибудь переменной - ссылку на этот приёмник. ![]() P.S. В последнем абзаце не уверен. Добавлено через 46 минут Покопался, всё таки можно присваивать переменной возвращаемое значение переменной, но придется инициализировать вызов этого самого события. У Вас есть что-то, типа:↓ ? var secRect:Sprite; var first:Sprite; secRect = new Sprite(); secRect.graphics.beginFill(0x0000FF); secRect.graphics.lineStyle(1); secRect.graphics.drawRect(190, 200, 20, 20); stage.addChild(secRect); first = new Sprite(); first.graphics.lineStyle(1); first.graphics.drawCircle(10, 20, 40); stage.addChild(first); first.addEventListener(MouseEvent.MOUSE_DOWN, firstListener); secRect.addEventListener(MouseEvent.MOUSE_DOWN, secRectListener); private function secRectListener(e:MouseEvent):void { trace("secRect!"); //e.updateAfterEvent(); } private function firstListener(e:MouseEvent):void { trace("first"); secRectListener(e); // вызов события. } ![]() Последний раз редактировалось Idon'tKnow; 18.05.2013 в 01:48. |
|
|||||
|
[+1 05.06.13]
Регистрация: Mar 2013
Сообщений: 42
|
А если вопроса не 3, а десятки или сотни, что тогда?
Не могу разобраться как добиться рандомности в таком случае. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|