![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2007
Сообщений: 302
|
Здравств.
Вот... должен быть ролик (танцующая девушка) которая вызывается функцией copyGirl() а ззади нее фон должен меняться к примеру каждых 3 секунды вызывается функцией tim(). вот код 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; } } } пишет RangeError: Error #2006: Предоставленный индекс выходит за допустимые пределы. at flash.display::DisplayObjectContainer/addChildAt() at flash.display::Stage/addChildAt() at girl/copyGirl() at girl() ![]() Подскажите как и в будущем избегать такой ошыбки? Пасибо. |
|
|||||
|
ну судя по коду ошибка здесь:
два вопроса: 1 зачем вы добавляете на stage? - это плохо 2 вы добавляете st во второй уровень. вы уверены, что там добавлены объекты в 0-й и 1-й уровни?
__________________
я могу стать всем, если только захочу |
|
|||||
|
[+1 16.08.10]
Регистрация: Jun 2009
Сообщений: 93
|
скорей всего проблема тута
помоему ты строго прописываешь индекс используй |
|
|||||
|
Регистрация: Jan 2007
Сообщений: 302
|
Felicast -
1. потому, что новичек, как правильней добавлять обьекты? 2. не уверен, проверю, попробую veisss попробую, отпишусь пасибо. |
|
|||||
|
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
равносильно
![]() |
|
|||||
|
Цитата:
можно завести контейнер какой-нибудь. (как в приведенных примерах (container))
__________________
я могу стать всем, если только захочу |
|
|||||
|
Регистрация: Jan 2007
Сообщений: 302
|
SamFR
а первый елемент как тогда? а то что вы написали равносильно, эт просто добавить обьек и не добавлять к нему позицю, просто поставить его на stage_? правильно я думаю? Добавлено через 1 минуту Felicast дык контейнер это свойство или нужно создавать к примеру Добавлено через 2 часа 36 минут Вот.. переделал, кажется правильно, но остается та ж ошыбка... ![]() Что я сделал неправильно? 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; } } } |
|
|||||
|
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Используйте addChildAt() только в том случае, когда вам нужно добавить объект на уже занятую позицию. В остальных случаях – addChild().
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; } Позвольте поинтересоваться, зачем вам тут лоадер? Последний раз редактировалось SamFR; 30.11.2009 в 03:24. |
|
|||||
|
Регистрация: Jan 2007
Сообщений: 302
|
Чуток не понял, как эт на уже занятую позицию, а почему не работает так как делал я? Читал, в книге и в хелпе адобовском - вроде все правильно, методом addChildAt добавляю в контейнер обьекты, а потом присваиваю им индексы 0 первый элемент, тоисть самый нижний, далее 1 и так д... numChilden-1 последний элемент тоисть самы верхний.
Пасиб. лоадер... хммм, ну с помощью него я загружаю извне картинки которые меняются рандом на фоне.. Или, эт тоже неправильная тропинка для этого дела? Пасиб Добавлено через 6 минут Не работает и так, - ругается на строку, - что не хватает параметров попробовал и так писать, все равно остается та же ошыбка. ![]() |
|
|||||
|
Регистрация: Jul 2009
Адрес: Москва
Сообщений: 99
|
Пишите вот так, должно заработать
UPD. А не работало потому что при добавлении первого ребенка у вас container.numChildren=0 и следовательно container.numChildren-1 = -1, а на -1 позицию добавлять нельзя. Вот и получается ваш Цитата:
Последний раз редактировалось Dimax4d; 30.11.2009 в 01:49. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|