Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Flash > дублирование клипа


Автор: cosmos33 19.4.2005, 14:45
smile Помогите, уже долгое время пытаюсь дублировать клип, но безрезультатно. Может я не правильно к нему обращаюсь. Я использую книгу Лапина, но очень многое у него не работает, даже при тупом копировании скрипта.
Я использую
Код
duplicateMovieClip

Если не трудно, хотя бы один пример !!!

Автор: Jlekc 19.4.2005, 14:55
Код

myMovie.duplicateMovieClip("newMovie", this.getNextHighestDepth());
newMovie._x = myMovie._x+myMovie._width+10;

Автор: cosmos33 19.4.2005, 15:00
smile А если мне необходимо размножить клип хаотично, например звезды?
Добавлено @ 15:01
getNextHighestDepth() что это за функция, я такой не знаю?

Автор: Гость_Alex Batsuev 19.4.2005, 17:04
Цитата
А если мне необходимо размножить клип хаотично, например звезды?

тогда ложим клип в библиотеку и делаем attachMovie. Даллее - RTFM
Цитата
getNextHighestDepth() что это за функция, я такой не знаю?

RTFM - MovieClip class
Для получения следующего пустого depth

Автор: AlDev 19.4.2005, 17:11
сори, не залогинился....
вообщем duplicateMovieClip не дублирует контент клипа.

Цитата
использую книгу Лапина,

это что за книга, если не секрет?

Автор: cosmos33 19.4.2005, 18:20
Самоучитель Flash Павел Лапин smile

Автор: AlDev 20.4.2005, 06:04
IMHO почитай лучше вот это:
http://projects2003.by.ru/ebooks/Gursky/

Автор: cosmos33 20.4.2005, 08:29
Спасибо большое! smile
А у тебя есть работы на Flash?

Автор: AlDev 20.4.2005, 09:05
из больших проектов только одна:
http://anychart.com

Автор: Jlekc 20.4.2005, 09:49
Цитата(Alex @ 19.4.2005, 17:11)
вообщем duplicateMovieClip не дублирует контент клипа.

а это чо за новость smile

создай клип, в нем хмм, например:
Код

z = this._name;

и зделай дубликат,
и скажи что не дублирует, и не инициализирует

Автор: AlDev 20.4.2005, 10:32
Код

var my_mc:MovieClip = this.createEmptyMovieClip('test_clip',this.getNextHighestDepth());
with (my_mc)
{
    beginFill(0xFF0000);
    moveTo(0,0);
    lineTo(100,0);
    lineTo(100,100);
    lineTo(0,100);
    lineTo(0,0);
    endFill();
}
var copy_mc = my_mc.duplicateMovieClip('test_clip_2',this.getNextHighestDepth());;
copy_mc._x = 200;
stop();


Так конечно всё работает, но, например, надо мне подгрузить картинку и сделать её копию:
Код

var my_mc:MovieClip = this.createEmptyMovieClip('test_clip',this.getNextHighestDepth());
my_mc.loadMovie('test.jpg');
var copy_mc = my_mc.duplicateMovieClip('test_clip_2',this.getNextHighestDepth());;
copy_mc._x = 200;
stop();

Результат печален...

Ну и если в таком случае:
Код

var my_mc:MovieClip = this.createEmptyMovieClip('test_clip',this.getNextHighestDepth());
var copy_mc:MovieClip;
var mcl:MovieClipLoader = new MovieClipLoader();
var mcl_list:Object = new Object();
mcl_list.onLoadInit = function(target)
{
  target._parent.copy_mc = target.duplicateMovieClip('test_clip_2',target._parent.getNextHighestDepth());;
  target._parent.copy_mc._x = 200;
}
mcl.addListener(mcl_list);
mcl.loadClip("test.jpg",my_mc);
stop();

то-же самое...

Вот что я собственно имел ввиду.

Автор: Jlekc 20.4.2005, 11:03
smile
мдя, дубликат делал ток для простых обектов
есе динамика, то аттач

чес даже не задумавался о дубликате при сложной архитектуре

ЗЫ: псиб, будем знать, ток ской стороны мне эти знания заюзать

Автор: cosmos33 22.4.2005, 11:12
Так ведь это код на Java, а в ActionScript как быть? smile

Автор: AlDev 22.4.2005, 11:14
Это ActionScript вообще-то smile
Я его как Java просто оформил smile

Автор: cosmos33 22.4.2005, 11:31
Тогда, при обьявлении переменных не нужно писать "var"? smile

Автор: AlDev 22.4.2005, 11:33
Почему?
Нужно.
Я тип указываю, дабы память всякой фигнёй не забивать.
Добавлено @ 11:36
RTFM smile
LiveDocs:
http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004&file=00000785.html

Автор: cosmos33 22.4.2005, 11:37
Ясно, спасибо!!! smile
Добавлено @ 11:40
Код
var _global.myName = "George"; // incorrect syntax for global variable
_global.myName = "George"; // correct syntax for global variable

Надо книгу почитать, на которую ты ссылку дал.

Автор: AlDev 22.4.2005, 11:46
_global - это объект. Причём достаточно интересный.
Один их его приколов:
Код

trace (_global==undefined);//true


Ладно, это к сведению. Можешь голову поломать, почему smile

Читай мануалы.
Цитата
To create a variable with global scope, use the _global identifier before the variable name and do not use the var = syntax.


http://livedocs.macromedia.com/flash/mx2004/main_7_2/00000846.html#159782

Автор: cosmos33 22.4.2005, 12:00
Так ведь клип тоже обьект.
Почему бы просто не размножить его?
Сейчас напишу, как смогу, а ты поправь:

Код

myclip=new Object();
for(i=1; i<100; i ++){
duplicateMoveClip('myclip','myclip+i', i){
 myclip+i.setProperty(_x:random(300));
}
}

Автор: AlDev 22.4.2005, 12:06
Код

var myclip:MovieClip = this.createEmptyMovieClip('my_clip',this.getNextHighestDepth();
var i:Number;
for (i=1;i<100;i++)
{
  myclip.duplicateMovieClip('clip_copy'+i,this.getNextHighestDepth());
}

Добавлено @ 12:09
Object - это Object,
а MovieClip - это MovieClip

ты пытаешься применить функцию MovieClip класса для Object.

Автор: cosmos33 22.4.2005, 12:15
А как тогда изменять св-ва клипа и его местоположение?

Автор: AlDev 22.4.2005, 12:23
т.е. как обращаться к клипу?

Вот некоторые варианты обращения к клипам:


1. Завести переменную и создать (приаттачить, сдупликейтить) клип. Например
Код

var my_mc:MovieClip = this.createEmptyMovieClip('clip_my',this.getNextHighestDepth());
var my_mc_1:MovieClip = this.attachMovie('some_id','new_name',this.getNextHighestDepth());
var my_mc_2:MovieClip = some_else_mc.duplicateMovieClip('new_clip_name',this.getNextHighestDepth());
var my_mc_3:MovieClip = _root['some_clip_name'];


2. Обратиться к клипу непосредственно относительно текущего или корневого клипа
Код

_root['some_clip_name'+i]._x = 10;//изменим _x
_root.some_clip_name._x = 10;
this._parent.some_clip_name._x = 10;
this.some_clip_name._x = 10;


основное - всё.
Какие свойства, методы и прочее читай в help-е.
в который раз RTFM smile
MovieClip class
Смотри в help


Добавлено @ 12:28
Вариант 1-й:

Код

var my_mc:MovieClip = this.createEmptyMovieClip('test_clip',this.getNextHighestDepth());
with (my_mc)
{
    beginFill(0xFF0000);
    moveTo(0,0);
    lineTo(20,0);
    lineTo(20,20);
    lineTo(0,20);
    lineTo(0,0);
    endFill();
}
var i:Number = 0;
var copy_mcs:Array = new Array();
for (i=0;i<10;i++)
{
    copy_mcs[i] = my_mc.duplicateMovieClip('test_clip_copy_'+i,this.getNextHighestDepth());;
    copy_mcs[i]._x = 25*i;
}
stop();


Вариант 2-й:
Код

var my_mc:MovieClip = this.createEmptyMovieClip('test_clip',this.getNextHighestDepth());
with (my_mc)
{
    beginFill(0xFF0000);
    moveTo(0,0);
    lineTo(20,0);
    lineTo(20,20);
    lineTo(0,20);
    lineTo(0,0);
    endFill();
}
var i:Number = 0;
for (i=0;i<10;i++)
{
    copy_mcs[i] = my_mc.duplicateMovieClip('test_clip_copy_'+i,this.getNextHighestDepth());;
    this['test_clip_copy_'+i]._x = 25*i;
}
stop();

Автор: szz 25.3.2006, 22:28
Цитата(AlDev @ 20.4.2005, 09:05 Найти цитируемый пост)
из больших проектов только одна:
http://anychart.com


Это ты сам этот Эничарт придумал?!

Автор: AlDev 26.3.2006, 02:59
Цитата(szz @ 26.3.2006, 03:28 Найти цитируемый пост)
Это ты сам этот Эничарт придумал?!

оффтопик smile разрабатывал сам smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)