PDA

Просмотр полной версии : createEmptyMovieClip


Zergy
09.03.2004, 21:23
Задача такая:
Нужно иметь мувик, который содержит вложеные мувики. Конкретно, это должна быть анимированная кнопка. А в ней есть статические и движущиеся объекты. Поэтому нужно иметь вложенные мувики.

Всё содержимое рисуется средствами Ac tionScript, то есть сначала создаётся "главный" мувик со статической начинкой и внутри его создаётся мувик, который предполагается двигать.
_root.createEmptyMovieClip("мувик_отецъ",0)
with(this){
lineStyle()
....(потом рисование)
}

Проблема в том, что когда я создаю вложеный мувик таким способом
мувик_отецъ.createEmptyMovieClip("имя",1)
он рисуется внутри мувик_отецъ и никак не обозначает своё самостоятельное присутствие на сцене, хотя он виден.

sergwizard
10.03.2004, 02:21
Очень загадочная фраза: ...и никак не обозначает своё самостоятельное присутствие на сцене, хотя он виден.

Ну, попробуй такой вариант:

MovieClip.prototype.moveMe = function(){
this.onEnterFrame = function(){
if(this._x<=0){
right = true;
}
if(this._x>=200){
right = false;
}
right ? this._x++ : this._x--;
}
}
this.createEmptyMovieClip("father",1);
with(father){
lineStyle(0,0xC0C0C0,0);
beginFill(0xC0C0C0,100);
lineTo(300,0);
lineTo(300,100);
lineTo(0,100);
lineTo(0,0);
endFill();
_x = 100;
_y = 100;
}
father.createEmptyMovieClip("son",1);
with(father.son){
lineStyle(50,0xFF0000,100);
moveTo(50,50);
lineTo(50.2,50);
moveMe();
}
father.onRelease = function(){
click = (click+1)%2;
click ? father.son._visible = false : father.son._visible = true;
}

nuran
10.03.2004, 12:17
Оригинал написал(а) Zergy
он рисуется внутри мувик_отецъ и никак не обозначает своё самостоятельное присутствие на сцене, хотя он виден. [/B]

ты бредишь

TTS
10.03.2004, 17:19
Оригинал написал(а) Zergy
_root.createEmptyMovieClip("мувик_отецъ",0)
with(this){
Может, надо было написать with(_root.мувик_отецъ)... ?
Оригинал написал(а) Zergy
мувик_отецъ.createEmptyMovieClip("имя",1)
Может, надо было написать _root.мувик_отецъ.createEmptyMovieClip("имя",1) ?

silin
10.03.2004, 20:16
в плеере виден, а редакторе, наверное, 'никак не обозначает.. '
так и должно быть, о чем речь ?

Zergy
10.03.2004, 20:57
Спасибо ребята, что откликнулись.

Очень загадочная фраза: ...и никак не обозначает своё
самостоятельное присутствие на сцене, хотя он виден.

Да, э точно;). Я имел ввиду что рисование присходит и на сцене он на самом деле появляется, но в Debuggere название дочернего клипа небыло. Но это уже не главная проблема, птому что я не правильно указывал параметры при создании дочернего клипа. Тормознул, потому что в ASP ушёл и ActionScript забыл совсем ((.

sergwizard, у меня почти такой же код, как и ты опубликовал, разница

лиш в том что ты используешь прототипы, а я просто вешаю на нужный дочерний клип
son.onEnterFrame = function(){}

Проблема теперь моя в том, что названия клипов присваиваются произвольные, на примере это так

NameMC="but_mc"; 'название мувика'

this.createEmptyMovieClip(NameMC,1); - отец
eval(NameMC).createEmptyMovieClip(NameMC+"_SubMenu",2); -дочерний
with (NameMC.NameMC+"_SubMenu"){
lineStyle(1,SubMLineColor,100);
...

};

eval(NameMC+"."+NameMC+"_SubMenu").onEnterFrame = function()

{this._y--};

Так вот из за строки типа (NameMC.NameMC+"_SubMenu") в WITH обращение к клипу не происходит....

sergwizard
11.03.2004, 03:32
Может быть, тебе лучше выложить исходник и точно сказать, что нужно... А то так, в слепую трудно представить, что ты хочешь сделать.

Штрек
11.03.2004, 03:47
98% - дело в относительности координат, в которых рисуешь.
Ты бы сделал исходник, организовав бы всё как надо, без прогр.рисования/ручками/. А уж потом ...
Мастера найдутся. :p

silin
11.03.2004, 21:50
я может опять невпопад, тогда пардон, но
если ты знаешь что (NameMC.NameMC+"_SubMenu") не существует, зачем пишешь
with (NameMC.NameMC+"_SubMenu"){
lineStyle(1,SubMLineColor,100);
...

};
это тоже, что with({}){...}
в результате рисуешь не в муве, а руте (т.е. видно, но неуправляемо)

Zergy
12.03.2004, 14:16
Лучше действительно вывешу пример, чем парить мозги кусками кода.
В архиве два файла, первый untitled-2 - это рабочий файл, где мне необходимо добиться работоспособности и untitled-3, это файл, который я подогнал к рабочему состоянию.
Разница между двумя этими файлами в том, что в untitled-3 имена мувикам я задаю явно, а в untitled-2 имена задаются опираясь на переменную с именем начального мувика.

Проблема в том, что мувики нормально создаются опираясь на имя в переменной, но доступ к ним в WITH, опираясь на конструкцию типа NameMC.NameMC+"_SubMenu" не работает, а работает только если в WITH яно указать мувик but_mc.but_mc_SubMenu

Zergy
12.03.2004, 14:24
Лучше действительно вывешу пример, чем парить мозги кусками кода.
В архиве два файла, первый untitled-2 - это рабочий файл, где мне необходимо добиться работоспособности и untitled-3, это файл, который я подогнал к рабочему состоянию.
Разница между двумя этими файлами в том, что в untitled-3 имена мувикам я задаю явно, а в untitled-2 имена задаются опираясь на переменную с именем начального мувика.

Проблема в том, что мувики нормально создаются опираясь на имя в переменной, но доступ к ним в WITH, опираясь на конструкцию типа NameMC.NameMC+"_SubMenu" не работает, а работает только если в WITH яно указать мувик but_mc.but_mc_SubMenu

silin
12.03.2004, 17:38
так нет же объекта NameMC.NameMC+"_SubMenu"
пиши with (eval(NameMC+"."+NameMC+"_SubMenu"))
или with (this[NameMC][NameMC+"_SubMenu"])

sergwizard
12.03.2004, 19:14
Вот так, наверное.
Ну, в принципе, silin ответил уже.