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

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

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

Регистрация: Apr 2013
Сообщений: 40
Отправить сообщение для WinSTOP с помощью Skype™
По умолчанию Не выполняется условие if в классе

Код AS3:
public function MainClass(){
if(brain1 == 1)
{
objF1CDelete();
}
}
Почему код выше не выполняет вот это действие objF1CDelete();
MainClass - класс присвоенный комнате.
Код AS3:
private function objF1CDelete(){
            removeChild(obj1);
		    }


Последний раз редактировалось WinSTOP; 09.04.2013 в 15:22.
Старый 09.04.2013, 15:52
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Кэп вещает: потому что brain1 не равно 1 )) или obj1 не дочерний объект экземпляра MainClass

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

Регистрация: Jan 2009
Сообщений: 1,651
Слишком вырвано из контекста. И в программировании нет понятия "комната". Откуда нам знать, что там у тебя "комната"? И нельзя "класс" присвоить "комнате". Можно экземпляр класса присвоить "комнате".
Это не то, чтобы я понтовался или придирался к мелочам. Правильная терминалогия очень важна, когда ты пытаешься объяснить свою проблему другим. Чем понятнее объяснишь - тем быстрее помогут. То же самое касается именования переменных(конкретно у тебя с именованием все впорядке) и отступов. Это не для тебя. Это для других, чтобы им было легче читать твой код и помогать тебе.

Так что пока - непонятно. Или больше кода покажи, или исходник, или раставь хотя бы трейсы вот, скажем так:
Код AS3:
public function MainClass(){
trace ("MainClass#MainClass. brain1="+brain1);
if(brain1 == 1)
{
objF1CDelete();
}
}
Чтобы было понятно, вообще вызывается ли функция-конструктор и чему равняется brain1 в этот момент.
__________________
мой пустой блог

Старый 09.04.2013, 18:07
WinSTOP вне форума Посмотреть профиль Отправить личное сообщение для WinSTOP Найти все сообщения от WinSTOP
  № 4  
Ответить с цитированием
WinSTOP
 
Аватар для WinSTOP

Регистрация: Apr 2013
Сообщений: 40
Отправить сообщение для WinSTOP с помощью Skype™
Вот весь код.
Код AS3:
package  {
 
	import flash.events.MouseEvent;
	import flash.display.MovieClip;
 
	public class MainClass extends MovieClip {
		//Переменные
		public var brain1:Number = 0;
		public var brain2:Number = 0;
		//
		public function MainClass()
		{
			//Обработка нажатия мышки на объект
			obj1.addEventListener(MouseEvent.MOUSE_DOWN, objF1);
			obj1C.addEventListener(MouseEvent.MOUSE_DOWN, objF1C);
			obj2.addEventListener(MouseEvent.MOUSE_DOWN, objF2);
			obj3.addEventListener(MouseEvent.MOUSE_DOWN, objF3);
			//
			obj1.stop();
			obj1C.stop();
			obj2.stop();
			obj3.stop();
			//
			if((brain1 == 1) && (brain2 == 2)){objF1CDelete();}
		}
		//Функции нажатия на объект
		public function objF1(event:MouseEvent):void{
			obj1.gotoAndStop(2);
			brain1 =1;
			trace(brain1);
			}
		public function objF2(event:MouseEvent):void{
			obj2.gotoAndStop(2);
 
			}
		public function objF3(event:MouseEvent):void{
			obj3.gotoAndStop(2);
 
			}
		public function objF1C(event:MouseEvent){
			obj1C.gotoAndStop(2);
			brain2 = 2;
			trace(brain2);
			}
		private function objF1CDelete(){
            obj1.parent.removeChild(obj1);
		    }
	}
}
комната - сцена, рабочая область.

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

Регистрация: Jan 2009
Сообщений: 1,651
Нарушена логика в коде. У тебя проверка if((brain1 == 1) && (brain2 == 2)){objF1CDelete();} выполняется один единственный раз, при создании сцены, когда и brain1 и brain2 равны 0. Больше она нигде не выполняется.
__________________
мой пустой блог

Старый 09.04.2013, 18:38
WinSTOP вне форума Посмотреть профиль Отправить личное сообщение для WinSTOP Найти все сообщения от WinSTOP
  № 6  
Ответить с цитированием
WinSTOP
 
Аватар для WinSTOP

Регистрация: Apr 2013
Сообщений: 40
Отправить сообщение для WinSTOP с помощью Skype™
Я куда ток не вставлял и в функцию, и за функцию, то ошибка то ещё что нибудь. Так правильно как будет?

Старый 09.04.2013, 18:43
WinSTOP вне форума Посмотреть профиль Отправить личное сообщение для WinSTOP Найти все сообщения от WinSTOP
  № 7  
Ответить с цитированием
WinSTOP
 
Аватар для WinSTOP

Регистрация: Apr 2013
Сообщений: 40
Отправить сообщение для WinSTOP с помощью Skype™
Если можно, то подскажите. Правильное ли у меня написание кода? Может где можно сократить и т.д. Название игры "найди две одинаковые картинки" см. рис. Конечно картинок будет штук 30.
Изображения
 

Старый 09.04.2013, 19:10
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 8  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Тебе нужно проверку выполнять, каждый раз, как ты меняешь brain1 или brain2.
Код AS3:
package  {
 
	import flash.events.MouseEvent;
	import flash.display.MovieClip;
 
	public class MainClass extends MovieClip {
		//Переменные
		public var brain1:Number = 0;
		public var brain2:Number = 0;
		//
		public function MainClass()
		{
			//Обработка нажатия мышки на объект
			obj1.addEventListener(MouseEvent.MOUSE_DOWN, objF1);
			obj1C.addEventListener(MouseEvent.MOUSE_DOWN, objF1C);
			obj2.addEventListener(MouseEvent.MOUSE_DOWN, objF2);
			obj3.addEventListener(MouseEvent.MOUSE_DOWN, objF3);
			//
			obj1.stop();
			obj1C.stop();
			obj2.stop();
			obj3.stop();
		}
 
		public function check ():void {
			if((brain1 == 1) && (brain2 == 2)){objF1CDelete();}
 
		}
		public function objF1(event:MouseEvent):void{
			obj1.gotoAndStop(2);
			brain1 =1;
			check ();
			}
		public function objF2(event:MouseEvent):void{
			obj2.gotoAndStop(2);
 
			}
		public function objF3(event:MouseEvent):void{
			obj3.gotoAndStop(2);
 
			}
		public function objF1C(event:MouseEvent){
			obj1C.gotoAndStop(2);
			brain2 = 2;
			check ();
			}
		private function objF1CDelete(){
            obj1.parent.removeChild(obj1);
		    }
	}
}
А по поводу "Правильное ли у меня написание кода? Может где можно сократить и т.д.", то тут все надо переписывать. Слушатель надо вешать один единственный на контейнер, который содержит все картинки, или, по крайней мере один и тот же слушатель вешать в одном цикле на все картинки. Нужно как-то описать какие картинки образуют пару, а не ручками кодить это для каждого частного случая и т.д.

Не надо ничего изобретать с нуля. Если тебе так уж лень сесть и прочитать полноценную книгу по программированию, то гугли уроки по созданию игр и делай уроки, пытайся разобраться в их коде.
__________________
мой пустой блог

Старый 09.04.2013, 19:21
WinSTOP вне форума Посмотреть профиль Отправить личное сообщение для WinSTOP Найти все сообщения от WinSTOP
  № 9  
Ответить с цитированием
WinSTOP
 
Аватар для WinSTOP

Регистрация: Apr 2013
Сообщений: 40
Отправить сообщение для WinSTOP с помощью Skype™
Спасибо, щас разбираться времени нет, попозже отпишусь. Не работает почему то.

Старый 09.04.2013, 20:07
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 10  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
Я не тестировал код. Не работает, потому что ошибка компиляции? Или на сцене не работает?
__________________
мой пустой блог

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

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

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


 


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


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