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

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

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

Регистрация: Jan 2007
Сообщений: 302
Question Error #2006 подскажыте в чем фишка...

Здравств.

Вот... должен быть ролик (танцующая девушка) которая вызывается функцией copyGirl()
а ззади нее фон должен меняться к примеру каждых 3 секунды вызывается функцией tim().
вот код

Код AS3:
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.URLRequest;
	import flash.utils.Timer;
 
	public class girl extends Sprite
	{
		public function girl()
		{
			tim();
			copyGirl();
		}
 
		public function tim(){
		var timer:Timer = new Timer(3000, 0);
			timer.addEventListener(TimerEvent.TIMER, bild);
			timer.start();
		}
 
		var loader:Loader = new Loader();
 
		public function bild(e:TimerEvent):void
		{
 
			var randBild:int = Math.random()*5;
			var nam:String = "swirl-"+randBild+".jpg";
			var urlR:URLRequest = new URLRequest(nam);
			trace(nam);
			loader.load(urlR);
			stage.addChildAt(loader,1);
		}
 
		public function copyGirl()
		{
			var childs:Array = [];
 
			for (var i:uint = 0; i<2; i++){
				var st:mcgirl = new mcgirl;
				stage.addChildAt(st,2);
				childs.push(st);
			}
 
			var g0:mcgirl = childs[0];
			var g1:mcgirl = childs[1];
 
			g0.x = -110;
			g0.y = 90;
			g1.x = 120;
			g1.y = 90;
		}
	}
}
если первой запускается функция tim() тогда ролик не грузиться только меняются картинки, но начинают появлятся через 3 секунды, понятно почему, нужно еще прописать с самого начало картинку чтоб подгружалась, а потом каждых 3 сек.
пишет
Код:
RangeError: Error #2006: Предоставленный индекс выходит за допустимые пределы.
	at flash.display::DisplayObjectContainer/addChildAt()
	at flash.display::Stage/addChildAt()
	at girl/copyGirl()
	at girl()
а если первой ставлю ф-цию copz Girl(), то вообще ничего не работает.

Подскажите как и в будущем избегать такой ошыбки?

Пасибо.

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

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
ну судя по коду ошибка здесь:
Код AS3:
stage.addChildAt(st,2);
два вопроса:
1 зачем вы добавляете на stage? - это плохо
2 вы добавляете st во второй уровень. вы уверены, что там добавлены объекты в 0-й и 1-й уровни?
__________________
я могу стать всем, если только захочу

Старый 29.11.2009, 21:16
veisss вне форума Посмотреть профиль Отправить личное сообщение для veisss Найти все сообщения от veisss
  № 3  
Ответить с цитированием
veisss
[+1 16.08.10]

Регистрация: Jun 2009
Сообщений: 93
скорей всего проблема тута
Код AS3:
stage.addChildAt(loader,1);
stage.addChildAt(st,2);
помоему ты строго прописываешь индекс используй
Код AS3:
container.addChildAt(child,0);  //в начало
container.addChildAt(child,container.numChilden-1); //в конец

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

Регистрация: Jan 2007
Сообщений: 302
Felicast -
1. потому, что новичек, как правильней добавлять обьекты?
2. не уверен, проверю, попробую

veisss
попробую, отпишусь

пасибо.

Старый 29.11.2009, 21:28
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 5  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Код AS3:
container.addChildAt(child,container.numChilden-1); //в конец
равносильно

Код AS3:
container.addChild(child);

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

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
Цитата:
1. потому, что новичек, как правильней добавлять обьекты?
можно просто addChild/addChildAt
можно завести контейнер какой-нибудь. (как в приведенных примерах (container))
__________________
я могу стать всем, если только захочу

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

Регистрация: Jan 2007
Сообщений: 302
SamFR
Код AS3:
container.addChildAt(child,container.numChilden-1); //в конец
а первый елемент как тогда?

а то что вы написали равносильно, эт просто добавить обьек и не добавлять к нему позицю, просто поставить его на stage_? правильно я думаю?

Добавлено через 1 минуту
Felicast дык контейнер это свойство или нужно создавать к примеру
Код AS3:
var container:---- = new ----()
Добавлено через 2 часа 36 минут
Вот.. переделал, кажется правильно, но остается та ж ошыбка...
Что я сделал неправильно?

Код AS3:
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.net.URLRequest;
	import flash.utils.Timer;
 
	public class girl extends Sprite
	{
		public function girl()
		{
			tim();
			copyGirl();
		}
 
		public function tim(){
		var timer:Timer = new Timer(3000, 0);
			timer.addEventListener(TimerEvent.TIMER, bild);
			timer.start();
			}
 
		var container:Sprite = new Sprite();
		var loader:Loader = new Loader();
 
		public function bild(e:TimerEvent):void
		{
 
			var randBild:int = Math.random()*5;
			var nam:String = "swirl-"+randBild+".jpg";
			var urlR:URLRequest = new URLRequest(nam);
			trace(nam);
			loader.load(urlR);
			container.addChildAt(loader,0);
		}
 
		public function copyGirl()
		{
			var childs:Array = [];
 
			for (var i:uint = 0; i<2; i++){
				var st:mcgirl = new mcgirl;
				container.addChildAt(st,container.numChildren-1);
				childs.push(st);
			}
 
			var g0:mcgirl = childs[0];
			var g1:mcgirl = childs[1];
 
			g0.x = -110;
			g0.y = 90;
			g1.x = 120;
			g1.y = 90;
		}
	}
}

Старый 30.11.2009, 01:09
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 8  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Используйте addChildAt() только в том случае, когда вам нужно добавить объект на уже занятую позицию. В остальных случаях – addChild().

Код AS3:
public function bild(e:TimerEvent):void
{
	var randBild:int = Math.random()*5;
	var nam:String = "swirl-"+randBild+".jpg";
	var urlR:URLRequest = new URLRequest(nam);
	trace(nam);
	loader.load(urlR);
	container.addChild(loader);
}
 
public function copyGirl()
{
	var childs:Array = [];
 
	for (var i:uint = 0; i<2; i++){
		var st:DisplayObject = new mcgirl;
		container.addChild(st);
		childs.push(st);
	}
 
	var g0:mcgirl = childs[0];
	var g1:mcgirl = childs[1];
 
	g0.x = -110;
	g0.y = 90;
	g1.x = 120;
	g1.y = 90;
}
Добавлено через 1 минуту
Позвольте поинтересоваться, зачем вам тут лоадер?


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

Регистрация: Jan 2007
Сообщений: 302
Чуток не понял, как эт на уже занятую позицию, а почему не работает так как делал я? Читал, в книге и в хелпе адобовском - вроде все правильно, методом addChildAt добавляю в контейнер обьекты, а потом присваиваю им индексы 0 первый элемент, тоисть самый нижний, далее 1 и так д... numChilden-1 последний элемент тоисть самы верхний.
Пасиб.

лоадер... хммм, ну с помощью него я загружаю извне картинки которые меняются рандом на фоне..
Или, эт тоже неправильная тропинка для этого дела? Пасиб

Добавлено через 6 минут
Не работает и так, - ругается на строку,
Код AS3:
container.addChildAt(st);
- что не хватает параметров
попробовал и так писать,
Код AS3:
container.addChildAt(st,1);
Код AS3:
container.addChildAt(st,container.numChildren-1);
все равно остается та же ошыбка.

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

Регистрация: Jul 2009
Адрес: Москва
Сообщений: 99
Пишите вот так, должно заработать

Код AS3:
container.addChild(st);
UPD. А не работало потому что при добавлении первого ребенка у вас container.numChildren=0 и следовательно container.numChildren-1 = -1, а на -1 позицию добавлять нельзя. Вот и получается ваш

Цитата:
Error #2006: Предоставленный индекс выходит за допустимые пределы.


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

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

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


 


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


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