PDA

Просмотр полной версии : Назначение переменной Movie Clip


3dok
21.11.2006, 16:30
Всем доброго времени суток.
Подскажите как сделать переменную из клипа

надо примерно так


on (release) {
var q = _root.q._visible = false;
var e = _root.e._visible = false;
var we = _root.we._visible = true;
trace(q);
}
Заранее спасибо.

El Scream
21.11.2006, 17:29
При програмном создании/загрузке
читаем про
1. createEmptyMovieClip(name:String, depth:Number) : MovieClip
2. attachMovie(id:String, name:String, depth:Number, [initObject:Object]) : MovieClip
В хелпе Flash примеры
Для первого метода понадобится еще и loadMovie(url:String, [method:String]) : Void

и работаем с ними наманер

var t:MovieClip=_root.createEmptyMovieClip("t", this.getDepth()+1);




_________________

При работе с клипами находящимися на кадрах до компиляции
1.присваим им уникальные имена в <Instance Name> в поле Properties
и работаем с ними наманер

_root.q._visible = false;

3dok
21.11.2006, 17:44
Поясню
существует некоторое кол-во обьектов типа Movie Clip
при нажатии на одну кнопку они все становятся невидимы (_visible=false)
нажимая на другую, появляются по очереди при каждом нажатии

вот хотелось бы их в массив или присвоить переменные для пущего удобства:-)

iNils
21.11.2006, 17:54
3dok, для оформления своего кода, надо использовать теги .

El Scream
21.11.2006, 18:02
присваивай им значения наманер
My_clip1
My_clip2
.
.
My_clip10
а потом обращайся к ним так

var i:Number=3;
trace(_root["My_clip"+i]);
//выводит _root.My_clip3

_root["My_clip"+i].visible=true;
// Делает My_clip3 невидимым

wvxvw
21.11.2006, 18:10
var _mc:MovieClip; // Задает тип переменной MovieClip
Функции, результатом работы которых является MovieClip:
createEmptyMovieClip();
attachMovie();
В переменную можно занести так же ссылку на любой существующий клип просто указав путь к нему:
var _mc:MovieClip = _root.my_mc; // ссылка на существующий клип
var _mc:MovieClip = _root.attachMovie("_mc", "_mc", 0, {mcVar:someValue}); // создание нового клипа
// и присвоение ссылки на него переменной
Можно так же создать свою функцию, результатом работы которой будет клип
function myCreateClip():MovieClip{
var _l1:String = arguments[0];
var _l2:Number = arguments[1];
var _l3:Object = arguments[2];
return _root.attachMovie(_l1, _l1, _l2, _l3);
}

stuff
02.06.2009, 16:34
а хотелось бы всё-таки узнать, как организовать movieClip`ы именно в массив,
т.к у него есть полезные методы: pop(), push(), и т д
чтобы обращаться к элементам типа myArray[i]._alpha..., или типа того
потому, как чтобы правильно работать с системой имён типа mcClip-1, mcClip-2 и т д
нужно, фактически, написать свой класс, имитирующий методы массива.
иначе как, например, удалить один из клипов, не потеряв сквозную нумерацию?

mooncar
02.06.2009, 20:13
Объект-контейнер, в которой находятся мувики - это уже своего рода ассоциативный массив.
Например, если у вас внутри mc_cont находятся mc1, mc1 и т.д.,
то и обращаться к ним можно как
mc_cont["mc1"];
mc_cont["mc2"];
и т.д.
_root - тоже контейнер.
Этого недостаточно для ваших целей?

stuff
02.06.2009, 22:19
пожалуй, что достаточно
а как создать объект-контейнер?
на сцене есть MovieClip mcChar, содержащий TextField txtChar.
таким образом я могу создать новый MovieClip, например, так:
mcChar.duplicateMovieClip("mcChar1", this.getNextHighestdepth();
и обратиться к нему:
mcChar1.txtChar.text = "s"
а как это будет выглядеть с использованим контейнера?

// ну и, конечно, со сквозной нумерациией засада получается

Stargazer
02.06.2009, 22:30
Никакого отдельного контейнера не нужно. mooncar говорит о том, что вложенные мувиклипы являются динамическими свойствами родительского элемента. Обратиться к ним можно так же, как и к случае с Object - через строку в квадратных скобках.

stuff
02.06.2009, 22:39
так же, как и к случае с Object - через строку в квадратных скобках.
а примерчик можно?

Stargazer
03.06.2009, 00:13
Например, если у вас внутри mc_cont находятся mc1, mc1 и т.д.,
то и обращаться к ним можно как
mc_cont["mc1"];
mc_cont["mc2"];
и т.д.
_root - тоже контейнер.

Ещё пример:

var i:Number= 1;
var we:String= "mymc" + i;

var mc:MovieClip= _root[we];
// теперь в mc будет ссылка на мувиклип c именем _root.mymc1

we= "mymc" + 10;
mc= _root.mymc1[we];
// теперь в mc будет ссылка на мувиклип с именем _root.mymc1.mymc10

stuff
03.06.2009, 23:31
а как правильно поместить MovieClip в контейнер?
и не может ли в качестве контейнера выступать элемент массива?

mooncar
04.06.2009, 00:23
Контейнер - это другой муви-клип, или даже _root.
Исходите из этого.

stuff
04.06.2009, 17:22
чего-то я, значит, не догнал
вот код:
var mcChar:MovieClip;
trace(mcChar.txtChar.text); //traces "y"
var mcDrop:MovieClip;
mcDrop.create = function(mcX,mcY){
this["mcChar1"] = mcChar.duplicateMovieClip("mcChar1", this.getNextHighestDepth());
this["mcChar1"]._x = mcX;
this["mcChar1"]._y = mcY;
}
mcDrop.create(300, 200);
trace(mcDrop["mcChar1"].txtChar.text); //traces "undefined"
есть мувиклип mcChar, содержащий TextField txtChar
я хочу в контейнер mcDrop типа MovieClip загнать mcChar1,
являющегося копией mcChar
в чём ошибка-то?

lexa2000lexa
04.06.2009, 17:42
все нормально работает, вот пример

stuff
04.06.2009, 17:47
unexpected file format
у меня - flash 8 pro
что-т не открывает

lexa2000lexa
04.06.2009, 17:53
вот под 8 версию

stuff
04.06.2009, 18:00
а, так ты и этот mcDrop создал на сцене ручками
а как его создать скриптом?
это-ж всё-таки контейнер должен быть по замыслу

lexa2000lexa
04.06.2009, 18:23
вот так тогдаvar mcChar:MovieClip;
trace(mcChar.txtChar.text); //traces "y"
var mcDrop:MovieClip = this.createEmptyMovieClip("mcDrop",1);
mcDrop.create = function(mcX,mcY){
this["mcChar1"] = mcChar.duplicateMovieClip("mcChar1", this.getNextHighestDepth());
this["mcChar1"]._x = mcX;
this["mcChar1"]._y = mcY;
}
mcDrop.create(300, 200);
trace(mcDrop["mcChar1"].txtChar.text);

stuff
04.06.2009, 18:28
ага, работает

Добавлено через 8 часов 13 минут
а как из строки извлечь цифру??

Добавлено через 18 часов 40 минут
есть строка str:String = "mcChar-01-15"
как из неё извлечь цифры - понятно,
а вот как привести их к числовому формату?
charAt() возвращает символ
у типа Number нашёл функцию toString(), переводящую число в строку,
а у String ничего похожего не нашёл

//requesting reinforcement