Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 16.04.2013, 19:37
AlexTrin вне форума Посмотреть профиль Отправить личное сообщение для AlexTrin Найти все сообщения от AlexTrin
  № 1  
Ответить с цитированием
AlexTrin

Регистрация: Mar 2013
Сообщений: 42
По умолчанию Как перейти на след вопрос, если ответ правильный

Здравствуйте, имеется код:

Код:
<?xml version="1.0" encoding="UTF-8"?>
<myList>
    <excercise>
        <question>2 x 2?</question>
        <answer>4</answer>
    </excercise>
</myList>
Код AS3:
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 минут
Пробовал так, что то не выходит:
Код AS3:
for (var i:uint = 0; i < NUM_QUESTIONS; i++) {
questionTxt.text = myList.excercise[i].question;
checkBtn.addEventListener(MouseEvent.CLICK, checkAnswer);
}
Добавлено через 1 час 52 минуты
Попробовал так:
Код AS3:
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.
Создать новую тему   Часовой пояс GMT +4, время: 01:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:55.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.