Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Адрессация вложенных объектов (http://www.flasher.ru/forum/showthread.php?t=55648)

Funky Beast 11.03.2004 20:57

Адрессация вложенных объектов
 
Парни и девушки помогите разобраться!!


В ообщем есть пустая страница. На ней я программно создаю пустой мувик. В него засовываю ранее срзданную кнопку(из библиотеки используя attachMovie()) + еще картинку(для заднего фона кнопки) подгружаю(в пустой мувик созданный в главном мувике используя loadMovie()). Факт в том что это все работает, но стоит мне обратиться к свойствам(типа _alpha или _x) мувиков, которые вложены в главный мувик, то ничего не получается.

Вот я и спрашиваю вас, умные люди: Как мне быть и что посоветуете?.
Просмотрел весь форум, но ничего не нашел. Пробовал разное, может не догоняю?

Буду очень благодарен за help.

Lorex 11.03.2004 21:06

напиши код!!!! как обращаешься...
к кому обращаешься... поробуем..... может пути... скорей всего

Funky Beast 11.03.2004 22:11

Re: Адрессация вложенных объектов
 
Вот сам код. Он реализован как функция создания кнопки. Подобное видел здесь на flasher'e.

function createButton(x0,y0,bwidth,bheight,bname,k,captionb,captiong,picture){
_root.createEmptyMovieClip(bname,k);
//создаю пустой мувик с именем bname. Он у нас будет главный. В него будет вкладываться все остальное.

eval(bname).attachMovie("button",captionb,2);
// в библиотеке есть кнопка с именем button. Я её засовываю в главный мувик под именем котрое в captionb находится, т.е. "aboutb"

eval(bname).attachMovie("eyeb",captiong,3);
//Тоже самое, что делал с кнопкой button делаю с мувиком eyeb (пихаю его в главный мувик, но на уровень выше).

eval(bname).createEmptyMovieClip(picture,1);
//Создаю пустой клип в главном клипе. Т.е. теперь в главном клипе у нас находится 3 объекта на разных уровнях.
loadMovie("D:/pics/"+picture+".jpg", "_root."+bname+"."+picture);
// Подгружаю картинку в только что созданный клип, который находится в главном клипе. Все это работает. Проблем здесь нет. Свойствами главно клипа тоже могу управлять, а добраться до вложенных объектов и их свойств не могу. Пробовал разные методы и with(){} и просто через _root параллельно следя что выдает trace(). А trace() выдавал undifined. Понятно, что дело в пути. Вот и спрашиваю может кто-то поможет.

Так я, предполагая, пытался добраться до нужных мест нужного мувика.

eval(bname).captionb._x = 20;
eval(banme).captionb._y = 40;
}

createButton(0,0,75,20,"button1",87,"aboutb","aboutg","aboutp");


Если кто знает или хотел бы ответить можно писать и на мыло.

Lorex 12.03.2004 00:04

Так тьі пытался добраться до нужных мест нужного мувика.

eval(bname).captionb._x = 20;
eval(banme).captionb._y = 40;



а так я пьітаюся...

eval(bname)._x = 20;
eval(banme)._y = 40;


у тебя же нету об"єкта captionb....
а вот в нем содержится имя Linkage'нутого клипа... которьій для манипулирования клипом заданном в bname - не нужно... манипулируем созданньім клипом

_root.createEmptyMovieClip(bname,k);

соответственно:


eval(bname)._x = 20;
eval(banme)._y = 40;

silin 12.03.2004 00:18

вот так работает
eval(bname+"."+captionb)._x = 20;
eval(bname+"."+captionb)._y = 40;

Lorex 12.03.2004 00:23

так да.. но тьі тогда двигаешь только кнопку...
А понятно.. тебе енто и нужно бьіло.... сорри

Nox Noctis 12.03.2004 12:11

тавагисчи :)
евал никому уже давнооо не нужен.

к любому методу/свойству объекта можно обратиться двумя способами:
1. имя_объекта.имя_свойства
2. имя_объекта["имя_свойства"]

в первом случае имя_свойства - это любой допустимый идентификатор

во втором случае имя_свойства - это строка. (или любое выражение в результате выполнения которого получается строка)

на данном примере:
есть объект _root, внутри него создаем объект с именем bname. (а bname - это строка)
значит после создания можно будет обратиться к нему так: _root[bname]

но тут даже это не нужно - функция createEmptyMovieClip возвращает ссылку на созданный ею клип.

я обычно, чтобы не писать лишнего, делаю как-то так:
var mc = _root.createEmptyMovieClip(bname, k);

и после этого обращаюсь к mc, чтобы установить какие-то свойства клипа.

функция attachMovie, кстати, тоже возвращает ссылку на приаттаченный клип. этим удобно пользоваться:

var btn = _root[bname].attachMovie("button", captionb, 2);
btn._x = 123;
btn._y = 456;

запись получается гораздо короче..

но можно конечно и так:
_root[bname].attachMovie("button", captionb, 2);
_root[bname][captionb]._x = 123;
_root[bname][captionb]._y = 456;

..такое обращение уже смотрится как операция с двумерным ассоциативным массивом

Funky Beast 12.03.2004 18:48

Thanks a lot!!!!
 
Все замечательно работает!!! Большое всем спасибо!!!

Попробовал все способы, чтобы никого не обидеть. Все в ажуре и без глюков!!

Даже не поверил сначала, что мне так быстро ответят знающие люди. Еще раз спасибо за помощь!! Вы спасли мой мозг! Целых 3 дня думал только об этом. Даже моя девушка сказала, что я охладел по отношению к ней. Вот что делает Flash с людми.

Lorex 12.03.2004 19:29

Рекомендую Flash переименовать на чтото вроде Fire!
Будет горячей....

Funky Beast 12.03.2004 20:04

Можно и так!

А можно и Flire.


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

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