Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обращение к клипам созданных через массив (http://www.flasher.ru/forum/showthread.php?t=161561)

letsrock85 25.07.2011 20:01

Обращение к клипам созданных через массив
 
Здравствуйте! Подскажите решение пожалуйста. Я создаю копии клипов(instance) и заношу их в массив в цикле:
Код AS3:

var url_link:Array = [];
var nameofQuiz:Array =[];
var b:Number = 0;
var a:Number = 5;
while (b<a) {
                with (clip2) {
                        nameofQuiz.push(new link_mc());//linc_mc лежит в библ.
                        nameofQuiz[b].x = 0;
                        nameofQuiz[b].y = 0;
                        //имя на текстовом поле
                        nameofQuiz[b].btn.label_txt.text = "lalala"+[b];
                        addChild(nameofQuiz[b]);               
 
                }
 
TweenMax.to(nameofQuiz[b].btn, 1, {x:0, y:(b*25), ease:Bounce.easeOut});
TweenMax.to(nameofQuiz[b].btn, 1, {scaleX:1, scaleY:1delay:0, ease:Expo.easeInOut});
 
        b = b+1;       
        }

Дерево клипов такое: Рут->Clip1->Clip2-тут этот код
Я пробовал и так и сяк обращаться и потратил не 1 час на поиски путей из другого клипа к этим созданным - без результатно((
Я пробовал:
Код AS3:

clip1.clip2.nameofQuiz[0].alpha = 0;
clip1.clip2.nameofQuiz0.alpha = 0;
clip1.clip2.getChildByName("nameofQuiz0").alpha = 0;

Получаю undefined, null или: A term is undefined and has no properties.
at quizv2_BD_3_fla::MainTimeline/frame1() при Трейсе с этими значениями
в as3 столкнулся с жуткой проблемой по управлению клипами из других клипов или уровней. что делать?

tsarapkabel 25.07.2011 22:29

Цитата:

Сообщение от letsrock85 (Сообщение 1014565)
Дерево клипов такое: Рут->Clip1->Clip2-тут этот код

Код в "Clip2"?

AddChild в menu_mc идёт.

olexandr 25.07.2011 22:33

давненько я такого страшного кода не видел
зачем вы пишете в каком-то далеком внутреннем клипе?
зачем использовать with?
и вообще вопросов тут еще много...
если хотите и дальше извращаться, то прислушайтесь к ответу tsarapkabel
возможно стоит вынести команду addChild за пределы блока with, чтобы заработал первый из испробованных вами способов...

КорДум 25.07.2011 23:26

Код AS3:

nameofQuiz[b].btn.label_txt.text = "lalala"+[b];

Это как так?

letsrock85 26.07.2011 02:03

Цитата:

Сообщение от olexandr (Сообщение 1014596)
давненько я такого страшного кода не видел
зачем вы пишете в каком-то далеком внутреннем клипе?
зачем использовать with?
и вообще вопросов тут еще много...
если хотите и дальше извращаться, то прислушайтесь к ответу tsarapkabel
возможно стоит вынести команду addChild за пределы блока with, чтобы заработал первый из испробованных вами способов...

Поправил - wich(clip2) так и было - я просто урезал код и заменил названия сюда для облегчения. все равно даже за пределами wich не находит путь который я указываю по логике:
Код AS3:

(root as MovieClip).clip1.clip2.nameofQuiz[1].alpha = 0;

- пишу в root сцены, т.е. (root as MovieClip) тут и не нужен в принципе - просто для дальнейшего юза.

я еще сапливы программер - пишу как понимаю, главное чтоб работало, а божить рано мне еще.

MXPain 26.07.2011 02:06

Цитата:

var b:Number = 0;
var a:Number = 5;
while (b<a)
вот такое вот вижу впервые)))

letsrock85 26.07.2011 02:08

Цитата:

Сообщение от КорДум (Сообщение 1014621)
Код AS3:

nameofQuiz[b].btn.label_txt.text = "lalala"+[b];

Это как так?

Тут все просто. nameofQuiz[b] это массив с клипами(а точнее путями к ним) которые берутся из библиотеки, в которых есть клип btn, в котором есть texfield а [b] номер клипа в массиве

MXPain 26.07.2011 02:09

Цитата:

b = b+1;
b++ - вот так симпатичнее

Код AS3:

nameofQuiz[b].name = "clip"+b;

и обращайтесь к клипу по имени по человечески

letsrock85 26.07.2011 02:14

Цитата:

Сообщение от MXPain (Сообщение 1014669)
вот такое вот вижу впервые)))

да..:) упростил так упростил! Вот код:
Код AS3:

var txtColor:Array = [];
var txtLabel:Array = [];
var url_link:Array = [];
var nameofQuiz:Array =[];
var b:Number = 0;
var xmlURLLoader:URLLoader = new URLLoader();
var xmlURLRequest:URLRequest = new URLRequest("http://213.184.x.x./menuData.xml");
xmlURLLoader.load(xmlURLRequest);
xmlURLLoader.addEventListener(Event.COMPLETE ,dataLoaded);
 
function dataLoaded(event:Event):void {
        var theXMLData:XML = new XML(xmlURLLoader.data);
        var a:Number = theXMLData.url_link.length();
        while (b<a) {
                txtColor.push(theXMLData.txtColor[b]);
                txtLabel.push(theXMLData.txtLabel[b]);
                url_link.push(theXMLData.url_link[b]);
                with (menu_mc) {
                        //можно так var menuTemplate:MovieClip = new link_mc();
                        nameofQuiz.push(new link_mc());//но так проще
                        nameofQuiz[b].x = 0;
                        nameofQuiz[b].y = b*2;
 
                        nameofQuiz[b].btn.scaleX = 0.5;
                        nameofQuiz[b].btn.scaleY = 0.5;
                        nameofQuiz[b].btn.label_txt.textColor =  txtColor[b];
 
                        nameofQuiz[b].btn.label_txt.text =txtLabel[b];
                        nameofQuiz[b].urlVar = url_link[b];
 
                        addChild(nameofQuiz[b]);
                }               
TweenMax.to(nameofQuiz[b].btn, 1, {x:0, y:(b*25), ease:Bounce.easeOut});
TweenMax.to(nameofQuiz[b].btn, 1, {scaleX:1, scaleY:1delay:0, ease:Expo.easeInOut});
 
        b = b+1;       
        var co:DisplayObject = menu_mc.getChildAt(1);
        trace(co);//думал покажет путь :)
        }
 
}

Добавлено через 35 минут
Код AS3:

nameofQuiz[b].name = "clip"+b;

и обращайтесь к клипу по имени по человечески[/quote]
Было бы просто. Пробовал так:
в menu_mc код:
Код AS3:

nameofQuiz[b].name = "clip"+b;
addChild(nameofQuiz[b]);

На главной
Код AS3:

var testMc:MovieClip = quizMenu1.menu_mc.getChildByName("clip0") as MovieClip;
testMc.alpha = 0;

получаю это: TypeError: Error #1009: Cannot access a property or method of a null object reference.
так же не обошлось без попытки:
Код AS3:

quizMenu1.menu_mc.clip0.alpha = 0;

фиг :(

Котяра 26.07.2011 13:37

Уберите with!
Что вы хотели им сказать?
И что такое menu_mc?
Это мувик в котором вы написали код?
тогда :
Код AS3:

var txtColor:Array = [];
var txtLabel:Array = [];
var url_link:Array = [];
var nameofQuiz:Array =[];
var b:Number = 0;
var xmlURLLoader:URLLoader = new URLLoader();
var xmlURLRequest:URLRequest = new URLRequest("http://213.184.x.x./menuData.xml");
xmlURLLoader.load(xmlURLRequest);
xmlURLLoader.addEventListener(Event.COMPLETE ,dataLoaded);
 
function dataLoaded(event:Event):void {
        var theXMLData:XML = new XML(xmlURLLoader.data);
        var a:Number = theXMLData.url_link.length();
        while (b<a) {
                txtColor.push(theXMLData.txtColor[b]);
                txtLabel.push(theXMLData.txtLabel[b]);
                url_link.push(theXMLData.url_link[b]);
 
                        //нужно так
                        var menuTemplate:MovieClip = new link_mc();
                        nameofQuiz.push(menuTemplate);
                        menuTemplate.x = 0;
                        menuTemplate.y = b*2;
 
                        menuTemplate.btn.scaleX = 0.5;
                        menuTemplate.btn.scaleY = 0.5;
                        menuTemplate.btn.label_txt.textColor =  txtColor[b];
 
                        menuTemplate.btn.label_txt.text =txtLabel[b];
                        menuTemplate.urlVar = url_link[b];
 
                        addChild(menuTemplate);
 
      TweenMax.to(menuTemplate.btn, 1, {x:0, y:(b*25), ease:Bounce.easeOut});
      TweenMax.to(menuTemplate.btn, 1, {scaleX:1, scaleY:1delay:0, ease:Expo.easeInOut});
 
        b++;       
        var co:DisplayObject = this.getChildAt(1);
        trace(co);
        }
 
}



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

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