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

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

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

Регистрация: Dec 2014
Сообщений: 3
Attention Проблемка с оператором условия

Я совсем недавно начал изучать ActionScript и это одна из моих первых программ.

Код AS3:
var a:Number = 0;
var b:Number = 0;
var c:Number = 0;
btnNo.visible = false;
btnYes.visible = false;
 
rec();
 
function rec():void {
txtA.text = "";
txtB.text = "";
txtAns.text = "";	
a = Math.round(Math.random()*10);
b = Math.round(Math.random()*10);
txtA.text = String(a);
txtB.text = String(b);	
  Chek1.addEventListener(MouseEvent.CLICK, j);
  function j(event:MouseEvent):void {  
	c = Number(txtAns.text);	
	if (a*b==c) {
	btnYes.visible = true;	
    btnNo.visible = false;	
		rec();	
	} 
	else {
		btnNo.visible = true;
		btnYes.visible = false;
	}
  }
}
Эта программа - тренажер таблицы умножения, и проблема заключается в том, что начиная со 2го (иногда с 3го)
ввода решения, оператор условия воспринимает введенный ответ неверным постоянно (даже если он является правильным).
Чтобы зациклить процесс (до бесконечности, т.к. я просто проверял работоспособность), я использовал рекурсию, возможно проблема из-за этого.

Ребят, в общем, помогите пожалуйста, это очень срочно, а опытным юзерам, думаю, вообще труда не составит
Буду рад любым вашим предположениям и подсказкам. Спасибо!
Вложения
Тип файла: rar Project1 (alfa 0.001).rar (6.5 Кб, 14 просмотров)


Последний раз редактировалось Posonyak; 09.12.2014 в 23:27.
Старый 09.12.2014, 23:10
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Отредактируйте ваше сообщение. Код необходимо обрамлять тегами [as3][/as3].
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 10.12.2014, 02:00
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 3  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Попробуйте так
Код AS3:
var a:Number = 0;
var b:Number = 0;
var c:Number = 0;
btnNo.visible = false;
btnYes.visible = false;
 
rec();
 
 
function rec():void
{
	txtA.text = "";
	txtB.text = "";
	txtAns.text = "";
	a = Math.round(Math.random() * 10);
	b = Math.round(Math.random() * 10);
	txtA.text = String(a);
	txtB.text = String(b);
}
 
Chek1.addEventListener(MouseEvent.CLICK, j);
function j(event:MouseEvent):void
{
	c = Number(txtAns.text);
	if (a * b == c)
	{
		btnYes.visible = true;
		btnNo.visible = false;
		rec();
	}
	else
	{
		btnNo.visible = true;
		btnYes.visible = false;
	}
}

Старый 10.12.2014, 11:47
Posonyak вне форума Посмотреть профиль Отправить личное сообщение для Posonyak Найти все сообщения от Posonyak
  № 4  
Ответить с цитированием
Posonyak

Регистрация: Dec 2014
Сообщений: 3
Огромнейшее спасибо, Samana!

Старый 10.12.2014, 11:53
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 5  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Пожалуйста!

Старый 10.12.2014, 14:35
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 6  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Вот, может пригодится.
Код AS3:
package {
 
import flash.display.Sprite;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.utils.Timer;
 
public class Main extends Sprite {
	private static const PLAY_ANIMATION_STATE: String = "palyAnimationState";
	private static const DEFAULT_ANIMATION_STATE: String = "defaultAnimationState";
 
	private static const CORRECT_ANSWER_STATE: String = "correctAnswerState";
	private static const NOT_CORRECT_ANSWER_STATE: String = "notCorrectAnswerState";
	private static const DEFAULT_ANSWER_STATE: String = "defaultAnswerState";
 
	private var _currentAnimationState: String = DEFAULT_ANIMATION_STATE;
	private var _answerState: String = DEFAULT_ANSWER_STATE
 
    private var _text: TextField = new TextField();
    private var _question: TextField = new TextField();
    private var _answer: TextField = new TextField();
 
    private var _task: Object;
 
    private var _buttonAnswer: Sprite;
    private var _buttonNextQuestion: Sprite;
 
	private var _background: Sprite = new Sprite( );
 
        public function Main() {
 
			super.addChild( _background );
 
            super.addChild(_text);
            super.addChild(_question);
            super.addChild(_answer);
 
            _text.text = 'сколько будет ';
 
            _question.x = 100;
            _question.text = '0' + '*' + '0';
 
            _answer.type = 'input';
            _answer.condenseWhite = true;
            _answer.restrict = '0123456789';
            _answer.maxChars = 3;
            _answer.x = 200;
            _answer.text = 'введите ответ';
			_answer.addEventListener( FocusEvent.FOCUS_IN, answer_focusInHandler);
			_answer.addEventListener( FocusEvent.FOCUS_OUT, answer_focusOutHandler);
 
            _buttonAnswer = createButton( 50, 20, 0xE9D83A );
            _buttonAnswer.addEventListener(MouseEvent.CLICK, buttonAnswer_clickHandler );
            _buttonAnswer.x = 300;
            super .addChild(_buttonAnswer);
 
			_buttonNextQuestion = createButton( 50, 20, 0x6FD152 );
			_buttonNextQuestion.addEventListener( MouseEvent.CLICK, buttonNextQuestion_clickHandler);
			_buttonNextQuestion.x = 350;
			super.addChild( _buttonNextQuestion );
 
            _task = { };
 
			defaultAnswerAnimation( );
			nextTask( );
        }
 
		private function buttonNextQuestion_clickHandler(event:MouseEvent):void 
		{
			nextTask( );
		}
 
		private function answer_focusOutHandler(event:FocusEvent):void 
		{
			if ( _answer.text == '' ) {
					_answer.text = 'введите ответ';
			}
 
		}
 
		private function answer_focusInHandler(event:FocusEvent):void 
		{
			if ( _answer.text == 'введите ответ' ) {
				_answer.text = '';
			}
		}
 
        private function buttonAnswer_clickHandler( event: MouseEvent ): void {
			if ( _answer.text == '' || _currentAnimationState == PLAY_ANIMATION_STATE || _answer.text == 'введите ответ' ) return;
 
            if ( isCorrectAnswer( ) )
			{
				correctAnswer( );
 
			}else {
				notCorrectAnswer( );
            }
        }
 
		private function timer_timerCompleteHandler(event:TimerEvent):void 
		{
			var timer: Timer = event.target as Timer;
			timer.removeEventListener(TimerEvent.TIMER_COMPLETE, timer_timerCompleteHandler );
 
 
 
			afterAnomation( );
		}
 
		private function correctAnswer( ): void
		{
			_answerState = CORRECT_ANSWER_STATE;
 
			correctAnswerAnimation( );
		}
 
		private function notCorrectAnswer( ): void
		{
			_answerState = NOT_CORRECT_ANSWER_STATE;
 
			notCorrectAnswerAnimation( );
 
		}
 
		private function afterAnomation( ): void
		{
			defaultAnswerAnimation( );
 
			if ( _answerState == CORRECT_ANSWER_STATE ) 
			{
				_answerState = DEFAULT_ANIMATION_STATE;
				_answer.text = 'введите ответ';
				nextTask( );
			}else if ( _answerState == NOT_CORRECT_ANSWER_STATE )
			{
				_answerState = DEFAULT_ANIMATION_STATE;
				_answer.text = 'введите ответ';
			}
		}
 
		private function nextTask( ): void
		{
			createTask( );
			setTask( );
		}
 
		private function isCorrectAnswer( ):Boolean
		{
			if ( _answer.text == String ( _task.answer ) ) return true;
 
			return false;
		}
 
		private function defaultAnswerAnimation( ): void
		{
			_currentAnimationState = DEFAULT_ANIMATION_STATE;
 
			_background.graphics.clear( );
			_background.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
			_background.graphics.beginFill(0x000000);
			_background.graphics.endFill( );
		}
 
		private function correctAnswerAnimation( ):void 
		{
			_currentAnimationState = PLAY_ANIMATION_STATE;
 
			_background.graphics.clear( );
			_background.graphics.beginFill(0x81CC73);
			_background.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
			_background.graphics.endFill( );
 
			var timer: Timer = new Timer( 500, 1 );
			timer.addEventListener(TimerEvent.TIMER_COMPLETE, timer_timerCompleteHandler );
			timer.start( );
		}
 
		private function notCorrectAnswerAnimation( ): void
		{
			_currentAnimationState = PLAY_ANIMATION_STATE;
 
			_background.graphics.clear( );
			_background.graphics.beginFill(0xD06F6F);
			_background.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
			_background.graphics.endFill( );
 
			var timer: Timer = new Timer( 500, 1 );
			timer.addEventListener(TimerEvent.TIMER_COMPLETE, timer_timerCompleteHandler );
			timer.start( );
		}
 
        private function setTask( ): void
		{
            _question.text = String( _task.firstMultiplier ) + '*' + String( _task.secondMultiplier );
        }
 
        private function createTask( ): void{
            _task.firstMultiplier = Math.round( Math.random() * 9 + 1 );
            _task.secondMultiplier = Math.round( Math.random() * 9 + 1 );
            _task.answer = _task.firstMultiplier * _task.secondMultiplier;
        }
 
        private function createButton( width: int = 50, height: int = 20, color: uint = 0xcccccc ):Sprite{
            var button: Sprite = new Sprite();
            button.graphics.beginFill(color);
            button.graphics.drawRect(0,0,width,height);
            button.graphics.endFill();
 
            return button;
        }
    }
}
NewProject.swf   (3.0 Кб)
Вложения
Тип файла: swf NewProject.swf (3.0 Кб, 75 просмотров)


Последний раз редактировалось Gerbert; 10.12.2014 в 20:25.
Старый 10.12.2014, 17:27
Posonyak вне форума Посмотреть профиль Отправить личное сообщение для Posonyak Найти все сообщения от Posonyak
  № 7  
Ответить с цитированием
Posonyak

Регистрация: Dec 2014
Сообщений: 3
Благодарю, Gerbert

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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