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

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

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Это объявление переменной.
Ага. В С++ например. У нас же форум о несколько другом языке.
Код AS3:
var figure:Figure;
__________________
Reality.getBounds(this);

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

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Действительно. Автоматизм дело наказуемое. Еще в объявлении счетчика так же накосячил. Поправил код.

Старый 05.12.2012, 16:49
XMON вне форума Посмотреть профиль Отправить личное сообщение для XMON Найти все сообщения от XMON
  № 23  
Ответить с цитированием
XMON
[+1 13.12.12]
[++1 13.12.12]

Регистрация: Aug 2012
Сообщений: 145
ничего не появляется на экране...
что я не так делаю?
Вложения
Тип файла: rar Container.rar (5.2 Кб, 28 просмотров)

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

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
У меня на работе нету flash. У вас Container на сцене стоит? Если нет - сделайте в качестве document class - Container.

Старый 05.12.2012, 17:02
XMON вне форума Посмотреть профиль Отправить личное сообщение для XMON Найти все сообщения от XMON
  № 25  
Ответить с цитированием
XMON
[+1 13.12.12]
[++1 13.12.12]

Регистрация: Aug 2012
Сообщений: 145
всё получилось, спасибо. я вот так вызывал:
Код AS3:
var hold:Container = new Container
большое спасибо вам за всё.
буду ставить вам плюсики в репутацию столько, сколько ваших сообщений в этой теме)

Добавлено через 32 секунды
щас поэкспериментирую над столкновениями

а как можно добавить в массив символ, который находится на сцене?


Последний раз редактировалось XMON; 05.12.2012 в 17:40.
Старый 05.12.2012, 17:59
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 26  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Цитата:
Сообщение от XMON Посмотреть сообщение
всё получилось, спасибо. я вот так вызывал:
Код AS3:
var hold:Container = new Container
Наверное вы забыли добавить контейнер в список отображения. Так же как фигуры добавляются в список отображения контейнера. addChild
Цитата:
а как можно добавить в массив символ, который находится на сцене?
Символы в библиотеке, а на сцене это уже DisplayObject-ы.
Любому объекту, который вы в IDE выставляете на сцену, можно в IDE же назначить name.
Далее мы можем обратиться к объекту который непосредственно содержит в себе именованный объект:

getChildByName("имяОбъекта");

Старый 05.12.2012, 18:34
XMON вне форума Посмотреть профиль Отправить личное сообщение для XMON Найти все сообщения от XMON
  № 27  
Ответить с цитированием
XMON
[+1 13.12.12]
[++1 13.12.12]

Регистрация: Aug 2012
Сообщений: 145
пытался добавить так:

Код AS3:
package {
	import flash.display.Sprite;
        import flash.display.DisplayObject;
	public class Container extends MovieClip
	{
                private var figures:Array = new Array();
		private var container:Sprite = new Sprite();
		private var target:DisplayObject = container.getChildByName("sprite1"); 
		private var sprite1:Sprite = new Sprite();
		public function Container()
                {
			container.addChild(sprite1);
			trace(container.getChildIndex(target)); // 0
                        figures.push(container)
		}
	}
}
но вот что пишет в вывод:

Код:
TypeError: Error #2007: Параметр child не должен быть равен нулю.
	at flash.display::DisplayObjectContainer/getChildIndex()
	at Container()
	at _3Dgalery_fla::MainTimeline/frame1()


Последний раз редактировалось XMON; 05.12.2012 в 18:47.
Старый 05.12.2012, 18:45
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 28  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
trace прямо выводит 0? По-хорошему именно там должно падение случиться.

Код AS3:
private var target:DisplayObject = container.getChildByName("sprite1");
Вы пытаетесь взять дочерний объек у спрайта, который был создан строчкой выше т.е. у пустого спрайта. Соответственно в target у вас сохраняется null.

Далее вы передаете null в getChildIndex:
Код AS3:
trace(container.getChildIndex(target));
Этого приложение перенести не может и падает.

Подумайте еще. Сейчас не успею написать развернутый ответ.

Старый 06.12.2012, 11:30
XMON вне форума Посмотреть профиль Отправить личное сообщение для XMON Найти все сообщения от XMON
  № 29  
Ответить с цитированием
XMON
[+1 13.12.12]
[++1 13.12.12]

Регистрация: Aug 2012
Сообщений: 145
вот код:
Код AS3:
package {
	import flash.display.MovieClip;
	import flash.display.Sprite;
    import flash.display.DisplayObject;
	public class Container extends MovieClip
	{
		private var figures:Array = new Array()
		private var container:MovieClip = new MovieClip;
		private var target:DisplayObject = container;  
		public function Container(){
			var figure:Figure;
			for(var i:int=0;i<10;i++){
				figure = new Figure();
				figure.x = i*20;
				figure.y = i*20;
				figure.rotation += 45
				addChild(figure);
				figures.push(figure);
				figures[i].x += 100
 
			}
			figures.push(target)
			container = ObjecT
			trace (figures)
		}
	}
}
добавил дисплей обджект в массив, проверил трейсом, он есть в массиве но не передвигается строчкой figures[i].x += 100

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

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Для каждого объекта строчка
Код AS3:
figures[i].x += 100
вызывается единожды.
Когда объект должен передвигаться.

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

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

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


 


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


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