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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.04.2010, 17:21
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 21  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Тогда проверяйте эту конструкцию:

Код AS3:
wolf_temp = wolfs[Math.floor(Math.random()*2)];
В частности, заполняется ли массив wolfs.
__________________
тонкий тролль, осеянный благодатью

Старый 27.04.2010, 17:24
mickfallout вне форума Посмотреть профиль Отправить личное сообщение для mickfallout Найти все сообщения от mickfallout
  № 22  
Ответить с цитированием
mickfallout
 
Аватар для mickfallout

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
Цитата:
Сообщение от stryker Посмотреть сообщение
учусь еще. Пока что так устраивает.
Если бы Ваш код был читабелен - Вам бы быстрее помогли. Ну ждите пока какой-нибудь герой разберется в вашем бардаке...
__________________
Могу ошибаться... =)

Старый 27.04.2010, 17:58
stryker вне форума Посмотреть профиль Отправить личное сообщение для stryker Найти все сообщения от stryker
  № 23  
Ответить с цитированием
stryker

Регистрация: Apr 2010
Сообщений: 24
GAIKER, элементы этого массива действительно null.
Но ведь этот массив был раньше объявлен:
Код AS3:
public var wolfs:Array = new Array(wolf1, wolf2);
Не пойму, в чем фокус?

Добавлено через 3 минуты
mickfallout, закройте, пожалуйста, глаза на нечитабельность кода. Если есть желание - помогите, пожалуйста, разобраться.
Есть конкретные данные:
объявлены переменные
Код AS3:
public var wolf_temp:MovieClip;
public var wolfs:Array = new Array(wolf1, wolf2);
Далее этот массив не заполняется:
Код AS3:
wolf_temp = wolfs[Math.floor(Math.random()*2)];


Последний раз редактировалось stryker; 27.04.2010 в 18:03.
Старый 27.04.2010, 18:33
mickfallout вне форума Посмотреть профиль Отправить личное сообщение для mickfallout Найти все сообщения от mickfallout
  № 24  
Ответить с цитированием
mickfallout
 
Аватар для mickfallout

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
Код AS3:
		public var wolf_temp:MovieClip;
		public var wolf1:MovieClip = new MovieClip();
		public var wolf2:MovieClip = new MovieClip();
		public var wolfs:Array = new Array(wolf1, wolf2);
		public function Main() { 
			super();
			wolf_temp = wolfs[Math.floor(Math.random()*2)];
			trace(wolf_temp);//выводит [object MovieClip]
		}
У меня нормально работает. Значит у Вас или wolf1/wolf2 не инициализированы, или какие-то косяки в совершенно нечитабельном коде.
__________________
Могу ошибаться... =)


Последний раз редактировалось mickfallout; 27.04.2010 в 18:37.
Старый 27.04.2010, 18:51
stryker вне форума Посмотреть профиль Отправить личное сообщение для stryker Найти все сообщения от stryker
  № 25  
Ответить с цитированием
stryker

Регистрация: Apr 2010
Сообщений: 24
mickfallout, спасибо, помогло.
Цитата:
какие-то косяки в совершенно нечитабельном коде.

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

Проблема была в том, что я объявлял переменные таким образом:
Код AS3:
public var wolf1:MovieClip;
public var wolf2:MovieClip;
вместо того, как сделали это Вы.

Объясните, почему требуется создавать эти переменные именно, как экземпляр класса MovieClip, ведь wolf1 и wolf2 уже присутствуют на сцене
?

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

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
не могу нормально ответить. не могу найти в Вашем коде то, что хочу процитировать =(
короче вроде так надо:
Код AS3:
package  {
 
	import flash.display.*
	import flash.events.*
	public class Main extends Sprite {
		public var wolf_temp:MovieClip;
		public var wolf1:MovieClip ;
		public var wolf2:MovieClip ;
		public var wolfs:Array;
		public function Main() { 
			super();
			wolfs = new Array(wolf1, wolf2);
			wolf_temp = wolfs[Math.floor(Math.random()*2)];
			trace(wolf_temp);//выводит [object MovieClip]
		}
	}
}
__________________
Могу ошибаться... =)

Старый 27.04.2010, 19:40
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 27  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Отвыкайте инициализировать поля класса при объявлении. Пока не будете точно знать, как работает этот механизм, присваивайте значения в конструкторе.
__________________
тонкий тролль, осеянный благодатью

Старый 27.04.2010, 20:47
stryker вне форума Посмотреть профиль Отправить личное сообщение для stryker Найти все сообщения от stryker
  № 28  
Ответить с цитированием
stryker

Регистрация: Apr 2010
Сообщений: 24
ок, это понятно. Пока что будем все присвоения делать в функции-конструкторе.
Но все-таки, если вернуться к Вашему варианту
Код AS3:
public var wolf1:MovieClip = new MovieClip();
то, получается, все объекты сцены нужно объявлять именно таким образом?
Если их не объявлять в конструкторе, разумеется.

?

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

Регистрация: Jun 2009
Адрес: Москва
Сообщений: 170
так что, мой вариант (выше на три поста) не работает? инициализировать переменную пустым мувиком, когда она должна хранить мувик с таймлайна - как-то очень странно, вообще не понимаю как это работает, если работает.
__________________
Могу ошибаться... =)

Старый 27.04.2010, 21:51
stryker вне форума Посмотреть профиль Отправить личное сообщение для stryker Найти все сообщения от stryker
  № 30  
Ответить с цитированием
stryker

Регистрация: Apr 2010
Сообщений: 24
пост №26 работает.
В частности, уже читабельный код?
Код AS3:
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
 
	import score.Score;
 
	public class IM02 extends MovieClip 
	{
		public var wolf1,wolf2: MovieClip;
		public var basket1,basket2,basket3,basket4: MovieClip;
		public var egg11,egg12,egg13,egg14,egg15,egg21,egg22,egg23,egg24,egg25,egg31,egg32,egg33,egg34,egg35,egg41,egg42,egg43,egg44,egg45: MovieClip;
		public var rabbit,rabbit10,rabbit11,rabbit20,rabbit21: MovieClip;
		public var chicken10,chicken11,chicken12,chicken13,chicken14,chicken20,chicken21,chicken22,chicken23,chicken24,chicken1,chicken2,chicken3: MovieClip;
		public var gameA,gameB: MovieClip;
		public var egg_temp,egg_temp5,egg_temp51,egg_temp52,egg_temp53,egg_temp54:MovieClip;
		public var wolf_temp,basket_temp:MovieClip;
 
		public var scoreGame12: TextField;
 
		public var btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9: SimpleButton;
 
		public var kChicken,numScore:int;
		public var arrayStart,wolfs,baskets1,baskets2,egg1,egg2,egg3,egg4,eggs,eggs51,eggs52,eggs53,eggs54:Array;
 
		public function IM02() {
			wolfs = new Array(wolf1, wolf2);
			baskets1 = new Array(basket1, basket2);
			baskets2 = new Array(basket3, basket4);
			egg1 = new Array(egg11, egg12, egg13, egg14, egg15);
			egg2 = new Array(egg21, egg22, egg23, egg24, egg25);
			egg3 = new Array(egg31, egg32, egg33, egg34, egg35);
			egg4 = new Array(egg41, egg42, egg43, egg44, egg45);
			eggs = new Array(egg11, egg21, egg31, egg41);
			eggs51 = new Array(egg21, egg31, egg41);
			eggs52 = new Array(egg11, egg31, egg41);
			eggs53 = new Array(egg11, egg21, egg41);
			eggs54 = new Array(egg11, egg21, egg31);
			arrayStart = new Array(wolf1,wolf2,basket1,basket2,basket3,basket4,egg11, egg12, egg13, egg14, egg15,egg21, egg22, egg23, egg24, egg25,egg31, egg32, egg33, egg34, egg35,egg41, egg42, egg43, egg44, egg45,gameA,gameB,rabbit,rabbit10,rabbit11,rabbit20,rabbit21,chicken10,chicken11,chicken12,chicken13,chicken14,chicken20,chicken21,chicken22,chicken23,chicken24,chicken1,chicken2,chicken3);
 
			scoreGame12.text = "12: 00";
 
			//-------Видимость символов сцены перед началом игры при ее загрузке-----
			for (var i=0; i<arrayStart.length; i++) 
			{
				arrayStart[i].visible = true;
			}
			btn5.addEventListener(MouseEvent.CLICK, game_A);//-----Запускаем игруА-----
 
			//btn6.addEventListener(MouseEvent.CLICK, game_B);
		}
		public function game_A(event:MouseEvent):void 
		{
			//-----Активируем четыре игровые кнопки -----
			btn1.addEventListener(MouseEvent.CLICK, leftUp);
			btn2.addEventListener(MouseEvent.CLICK, leftDown);
			btn3.addEventListener(MouseEvent.CLICK, rightUp);
			btn4.addEventListener(MouseEvent.CLICK, rightDown);
 
			//-------Видимость символов сцены при начале "играА"-----
			for (var i=0; i<arrayStart.length; i++) 
			{
				arrayStart[i].visible = false;
			}
			rabbit.visible = true;
			gameA.visible = true;
 
			numScore = 0;
			scoreGame12.text = String(numScore);
 
			//-----Назначаем случайным образом начальные позиции для волков и корзин-----
			wolf_temp = wolfs[Math.floor(Math.random()*2)];
			wolf_temp.visible = true;
			if (wolf_temp == wolf1) 
			{
				basket_temp = baskets1[Math.floor(Math.random()*2)];
				basket_temp.visible = true;
			}
			if (wolf_temp == wolf2) 
			{
				basket_temp = baskets2[Math.floor(Math.random()*2)];
				basket_temp.visible = true;
			}
			stage.addEventListener(Event.ENTER_FRAME, startGameA);
		}
 
		public function startGameA(event:Event):void 
		{
		}
		private function leftUp(event:MouseEvent):void 
		{
			wolf1.visible = true;
			wolf2.visible = false;
			basket1.visible = true;
			basket2.visible = false;
			basket3.visible = false;
			basket4.visible = false;
		}
		private function leftDown(event:MouseEvent):void 
		{
			wolf1.visible = true;
			wolf2.visible = false;
			basket1.visible = false;
			basket2.visible = true;
			basket3.visible = false;
			basket4.visible = false;
		}
		private function rightUp(event:MouseEvent):void 
		{
			wolf1.visible = false;
			wolf2.visible = true;
			basket1.visible = false;
			basket2.visible = false;
			basket3.visible = true;
			basket4.visible = false;
		}
		private function rightDown(event:MouseEvent):void 
		{
			wolf1.visible = false;
			wolf2.visible = true;
			basket1.visible = false;
			basket2.visible = false;
			basket3.visible = false;
			basket4.visible = true;
		}
	}
}

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

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

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


 


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


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