![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Есть массив из элементов мувиков (карт Таро), собираюсь рендомом выбирать карты, но обратиться к элементу массива и добавить в клип не получается
var card_a:Array = new Array(); var card_a0:MovieClip = new c0(); var card_a1:MovieClip = new c1(); var card_a2:MovieClip = new c2(); var card_a3:MovieClip = new c3(); var card_a4:MovieClip = new c4(); var card_a5:MovieClip = new c5(); var card_a6:MovieClip = new c6(); var card_a7:MovieClip = new c7(); var card_a8:MovieClip = new c8(); var card_a9:MovieClip = new c9(); var card_a10:MovieClip = new c10(); var card_a11:MovieClip = new c11(); var card_a12:MovieClip = new c12(); var card_a13:MovieClip = new c13(); var card_a14:MovieClip = new c14(); var card_a15:MovieClip = new c15(); var card_a16:MovieClip = new c16(); var card_a17:MovieClip = new c17(); var card_a18:MovieClip = new c18(); var card_a19:MovieClip = new c19(); var card_a20:MovieClip = new c20(); var card_a21:MovieClip = new c21(); for(var i:Number = 0; i<22; i++){ card_a.push(card_a+"i"); }
__________________
cdc7600.livejournal.com |
|
|||||
|
не вариант, уже пробовала )
__________________
cdc7600.livejournal.com |
|
|||||
|
Регистрация: May 2006
Адрес: Нск
Сообщений: 91
|
если вопрос заключается в добавлении в массив то объявлять и добавлять в массив карты имхо проще так:
for(var i:Number = 0; i<22; i++){ var cardClass:Class = getDefinitionByName("c"+i) as Class; var card:MovieClip = new cardClass(); куда_нужно.addChild(card); card_a.push(card); } upd: невнимательно прочитал тему, проапдейтил код. Последний раз редактировалось Alkaz; 18.03.2009 в 12:27. |
|
|||||
|
спасибо за кавычки, продинамила )
при добавлении типа появляется ошибенция cannot convert "card_a0" to flash.display.DisplayObject ![]() верхний не работал.. угу ) ща потестим... странно , что перестало работать, то что работало )) мне не все нужно добавлять элементы ![]()
__________________
cdc7600.livejournal.com Последний раз редактировалось cdc7600; 18.03.2009 в 12:39. |
|
|||||
|
воспользовалась
Parameter child must be non-null. at flash.display: isplayObjectContainer/addChild()жесть) не стоило переходить, наверное, на ас3.. )
__________________
cdc7600.livejournal.com |
|
|||||
|
Регистрация: May 2006
Адрес: Нск
Сообщений: 91
|
ну соответственно не забываем о приведении типов
хотя я прогнал что-то. по идее и без этого должно добавляться. вы моим кодом воспользовались? Последний раз редактировалось Alkaz; 18.03.2009 в 12:38. |
|
|||||
|
Регистрация: May 2006
Адрес: Нск
Сообщений: 91
|
ну почему сейчас ошибка возникает - понятно, дисплей обжектом то что вы пытаетесь добавить явно не является. ну выложите более полный код. то что предложил я у меня вполне даже работает.
а на АС3 переходить думаю еще как стоит ![]() |
|
|||||
|
вот такой вот быдло-код
чё-то не могу разобраться как всё в классы затулить ) import flash.display.MovieClip; function personal_gadanie(event : MouseEvent):void { var personal1:MovieClip = new personal_class(); //четыре карты для предсказания :D var card1:MovieClip = new card(); var card2:MovieClip = new card(); var card3:MovieClip = new card(); var card4:MovieClip = new card(); var card_a:Array = new Array(); // 22 карты, которые могут выпасть var card_a0:MovieClip = new c0(); var card_a1:MovieClip = new c1(); var card_a2:MovieClip = new c2(); var card_a3:MovieClip = new c3(); var card_a4:MovieClip = new c4(); var card_a5:MovieClip = new c5(); var card_a6:MovieClip = new c6(); var card_a7:MovieClip = new c7(); var card_a8:MovieClip = new c8(); var card_a9:MovieClip = new c9(); var card_a10:MovieClip = new c10(); var card_a11:MovieClip = new c11(); var card_a12:MovieClip = new c12(); var card_a13:MovieClip = new c13(); var card_a14:MovieClip = new c14(); var card_a15:MovieClip = new c15(); var card_a16:MovieClip = new c16(); var card_a17:MovieClip = new c17(); var card_a18:MovieClip = new c18(); var card_a19:MovieClip = new c19(); var card_a20:MovieClip = new c20(); var card_a21:MovieClip = new c21(); for(var i:Number = 0; i<22; i++){ card_a.push("card_a"+i); } // добавляю на сцену 4 карты, типа под курсором addChildAt(personal1,getChildIndex(cursor1)-1); personal1.addChild(card1); personal1.addChild(card2); personal1.addChild(card3); personal1.addChild(card4); //координаты карт card1.x=111.5; card1.y=205.5; card2.x=223.5; card2.y=205.5; card3.x=111.5; card3.y=363.4; card4.x=223.5; card4.y=363.4; //движ var move_tw1:Tween = new Tween(resume1,"x",Regular.easeInOut,this.x,-709,2,true); var move_tw2:Tween = new Tween(personal1,"x",Regular.easeInOut,709,0,2,true); // а вот тут я пытаюсь втулить а символ хотя бы первую карту, в дольейшем это какбе рендом card1.card_ins.addChild(card_a[0] as DisplayObject); // эксит personal1.exit_but.addEventListener(MouseEvent.CLICK, exit_t); move_tw1.addEventListener(TweenEvent.MOTION_FINISH, onMovefinish); //переворот карт function onMovefinish(event:TweenEvent):void { removeChild(resume1); var intervalId1:uint = setTimeout(Que, 1000); card1.play(); //card_a[0] function Que():void { card2.play(); var intervalId2:uint = setTimeout(Que1, 1000); function Que1():void { card3.play(); var intervalId3:uint = setTimeout(Que2, 1000); function Que2():void { card4.play(); } } } /*добавляем функции обработки нажатия карт, пока их неть*/ card1.addEventListener(MouseEvent.CLICK, function_card1); card2.addEventListener(MouseEvent.CLICK, function_card2); card3.addEventListener(MouseEvent.CLICK, function_card3); card4.addEventListener(MouseEvent.CLICK, function_card4); function function_card1(event:MouseEvent):void { } function function_card2(event:MouseEvent):void { } function function_card3(event:MouseEvent):void { } function function_card4(event:MouseEvent):void { } } function exit_t(event:MouseEvent):void { var move_tw3:Tween = new Tween(personal1,"alpha",Regular.easeInOut,1,0,1,true); // тут ремувить листенеры personal1.exit_but.removeEventListener(MouseEvent.CLICK, exit_t); /*card1.removeEventListener(MouseEvent.CLICK, function_card1); card2.removeEventListener(MouseEvent.CLICK, function_card2); card3.removeEventListener(MouseEvent.CLICK, function_card3); card4.removeEventListener(MouseEvent.CLICK, function_card4);*/ move_tw3.addEventListener(TweenEvent.MOTION_FINISH, remove); function remove(event:TweenEvent):void { removeChild(personal1); per_bt.addEventListener(MouseEvent.ROLL_OVER, per_onRollOver); analiz_bt.addEventListener(MouseEvent.ROLL_OVER, analiz_onRollOver); yesno_bt.addEventListener(MouseEvent.ROLL_OVER, yesno_onRollOver); exit_bt.addEventListener(MouseEvent.ROLL_OVER, exit_onRollOver); /* включаем кнопки меню*/ per_bt.addEventListener( MouseEvent.CLICK, personal_magic); } menu_sb.alpha=1; } } function random_card():void { }
__________________
cdc7600.livejournal.com |
|
|||||
|
Регистрация: May 2006
Адрес: Нск
Сообщений: 91
|
суровый код
не осилил ![]() ваша главная проблема в том что вы добавляете в массив не карту а строку, в вашем варианте попробуйте объявить переменные не внутри функции и: чтобы по идее работало как я сказал попробуйте не объявлять переменные card_a0..card_a21, а один лишь массив и вместо вашего цикла вставки карт в массив напишите мой цикл который с getDefinitionByName, или напишите какую ошибку он вам при таком раскладе выдает если в предыдущей итерации так и сделали, ну там строка с addChild как я понял вам не нужна, так что ее удалите. вот вам целых 2 способа попробовать заставить работать то что написали вы. далее: начнем с того что решительно не пользуемся вложенными функциями, я еще понимаю в АС2 где с областью видимости были проблемы, да и то делегат же был. почитайте про ООП и попробуйте написать на классах для начала что-нибудь попроще. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|