PDA

Просмотр полной версии : Создание копии клипов из класса


Ja-Ja
07.01.2006, 18:16
Есть класс,его код

class TEffect extends MovieClip {
var s1, s2:MovieClip;
private var str:String = "";
function set strN(s:String):Void {
str = s;
}
function get strN():String {
return str;
}
public function eff1(tFormat:TextFormat, interval:Number) {
var lengt:Number = str.length;
var str1:String = str;
var i:Number = 1;
var func:Function = function () {
var st:String = str1.charAt(i-1);
trace(st);
set("this.s"+i+".s2.text_txt.text", st);
set("this.s"+i+".s2.text_txt.autoSize", true);
eval("this.s"+i+".s2.text_txt").setTextFormat(tFormat);
eval("this.s"+i+".s2").play();
i++;
if (i>lengt) {
clearInterval(i1);
} else {
this.s1.duplicateMovieClip("s"+i, 2*i+100);
this.trace(s1)
}
};
var i1:Number = setInterval(func, interval);
}
}

клипы есть в мувике. общая иерархия такая this.s1.s2.text_txt.
не работает метод duplicateMovieClip(хочу копировать клип s1),ему что то не нравится,почему такое может быть?Может у кого нибудь есть что сказать по данной проблеме? :(

Antares
07.01.2006, 18:19
ему что то не нравится,почему такое может быть?
Ты прав, вокруг одни телепаты.

А у класса конструктора быть не должно? ;)

Ja-Ja
07.01.2006, 18:36
Наиогромнейшее спасибо,ничего не работает.

Antares
07.01.2006, 18:55
ну это твои проблемы. Ты даже не описал какую ошибку говорит компилятор. Я второй раз повторю -- телепатов здесь нет.

Если на твой вопрос не отвечают надо сначала посмотреть, как ты его задал.

Ja-Ja
07.01.2006, 19:43
Никаких ошибок он не выдает,просто нет копирования мувиков вообще. Ему что то не нравится,это не значит,что он ругается и дает ошибку,просто повторяю не происходит копирование,хотя по логике все правильно написал.

Antares
07.01.2006, 19:58
Обычно в таком случае ошибка состоит в том, что дублирование происходит, просто человек не смещает новый объект и визуально ничего не меняется.

Выход: посмотреть в дебаггере, создаются ли новые мувики. Если нет -- трейсить this, а также параметры, передаваемые методу.

Madasan
08.01.2006, 08:06
Привет, внимательно почитал код, хм, не понял что бы это значило:
this.trace(s1)
И ещё вместо
eval("this.s"+i+".s2").play();
я бы записал
this["s"+i].s2.play() // посимпатишнее..
Что делает класс толком не понял, но у меня тоже была проблема с путями, когда кидаешь function в setInterval, то потом если сделать там trace(this), то выводит undefined!! не помню, че я сделал, но попробуй протрейсить свои пути, ведь если компилятор ошибки не выдает, то либо класс не подключен, либо Duplicate не вызывается, либо флэш не может найти клип с которого дублировать. Вобщем попробуй по шагам пройти, это особенно удобно если ещё дебаггер припахать...удачи!:-)

Ja-Ja
08.01.2006, 15:05
Большое спасибо!

зы
this.trace(s1) - это что то я напарил =)

Antares
08.01.2006, 15:44
У функции, вызываемой через интервал, нет this. Именно поэтому форма записи для класса отличается