Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   копирование клипа созданного программно (http://www.flasher.ru/forum/showthread.php?t=144738)

ЛяЛя 20.09.2010 11:35

копирование клипа созданного программно
 
Подскажите пожалуйсто, как копировать мувиклип созданный программно в коде через new MovieClip. спасибо за ответы.

КорДум 20.09.2010 14:10

Как что сделать? Опять написать new MovieClip(), нет? А как может быть создан мувиклип программно в коде? Это же спрайт. Или клип вытащенный из библиотеки? Или созданный с нуля мувиклип с addFrameScript присобачиваниями? Конкретнее, у меня навыки телепата не развиты, я прокачиваю другого перса.

samana 20.09.2010 14:25

Скорее всего ЛяЛя создала муви-клип, и нарисовала в нём всёго разного, и теперь хочет создавать точно такие же клипы. Если так, то что бы скопировать нарисованное одного клипа в другой, существует метод copyFrom(object.graphic). Но как сказал уже КорДум, то мувиклип не обязательно для этого использовать, можно и спрайт, хотя в мувиклипе можно задавать доп.свойства (если спрайт не расширяете конечно)

Код AS3:

var c:MovieClip=new MovieClip()
 
c.graphics.beginFill(0xFFFF00,0.5);
c.graphics.drawCircle(20,20,15);
//-----------
c.graphics.beginFill(0xFF0000,1);
c.graphics.drawCircle(10,40,30);
 
addChild(c)
 
//создается пустой клип, но с таким же содержимым как предыдущий
var c2:MovieClip=new MovieClip();
c2.graphics.copyFrom(c.graphics)
addChild(c2);
c2.x=100


КорДум 20.09.2010 14:31

Я хотел предложить примерно то же, только с методом примерно таким:
Код AS3:

...
var mc1:MovieClip = new MovieClip();
createGraphic(mc1);
 
var mc2:MovieClip = new MovieClip();
createGraphic(mc2);
...
 
private function createGraphic(mc:MovieClip):void {
    mc.graphics...
    bla-bla-bla
}


ЛяЛя 20.09.2010 14:34

смысл в том что я создаю мувиклип например mov1(загружаю bitmap, загржуаю swf (анимация), загружаю ещё другую swf (анимация, с активной кнопкой)) и мне надо сделать копию уже полученного mov1. А как это сделать не знаю.

КорДум 20.09.2010 14:39

Ну, тогда мой метод и пригодится, только вместо графики грузим ваши запчасти.
ЗЫ. а почему именно MovieClip?
Достаточно будет спрайта, ибо, когда мы помещаем живую мышку в клетку, нам разве нужно, чтобы клетка тоже была живая?

ЛяЛя 20.09.2010 16:01

[quote=КорДум;937279]Ну, тогда мой метод и пригодится, только вместо графики грузим ваши запчасти.
[quote] расскажите об этом поподробнее как грузить.
потому что думала что раз у меня движения а почитала что спрайт (может не правильно поняла) не для движения, вот и использовала мувиклип.

КорДум 20.09.2010 19:18

Цитата:

расскажите об этом поподробнее как грузить.
А как вы грузите? Вы же писали:
Цитата:

загружаю bitmap, загржуаю swf (анимация), загружаю ещё другую swf (анимация, с активной кнопкой)
Так и надо грузить.

Цитата:

спрайт (может не правильно поняла) не для движения
Верно, только САМ спрайт не для движения, а в нем может быть все, что угодно, хоть тысячнокадровый ролик.

ЛяЛя 21.09.2010 13:05

здраствуйте! продолжаются мои мучения! не получается сделать то что хочется
вот код
Код AS3:

import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.display.*;
import flash.utils.ByteArray;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.events.*;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
 
var magicNumber:Number;//Магическое число!:) Размер полного круга панорамы
var maxSpeed = 3;//Максимальная скорость перемещения панорамы
var speed:Number;//Текущая скорость и направление, заодно.
 
var holder:MovieClip=new MovieClip();//клип1 в который все складывается
holder.x = 0;
holder.y = 0;
var holder2:MovieClip=new MovieClip();//клип2 в который все складывается
holder2.y = 0;
holder2.x = 0;
var mc:MovieClip=new MovieClip();// клип на сцене
mc.x = 0;
mc.y = 0;
 
var loaderBitmap2:Loader = new Loader();// для второго bg
var loaderBitmap:Loader = new Loader();// фон
var urlRequestBitmap:URLRequest = new URLRequest("panorama.png");
loaderBitmap.load(urlRequestBitmap);
loaderBitmap.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadAllProgress);
loaderBitmap.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoadedB);
function fileLoadedB(e:Event):void
{
    loaderBitmap.x = 0;
    loaderBitmap.y = 0;
    magicNumber = loaderBitmap.width;
    loaderBitmap2.loadBytes(loaderBitmap.contentLoaderInfo.bytes);
    loaderBitmap2.y = 0;
    loaderBitmap2.x = 0;
}
 
var loaderMovie:Loader = new Loader();
var loaderMovie2:Loader = new Loader();
var urlRequestMovie:URLRequest = new URLRequest("vid01.swf");
loaderMovie.load(urlRequestMovie);
loaderMovie.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoaded);
loaderMovie.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadAllProgress);
function fileLoaded(e:Event):void
{
    loaderMovie.x = 270;
    loaderMovie.y = 71;
    loaderMovie.width = 174;
    loaderMovie.height = 233;
    loaderMovie2.loadBytes(loaderMovie.contentLoaderInfo.bytes);
    loaderMovie2.x = 270;
    loaderMovie2.y = 71;
    loaderMovie2.width = 174;
    loaderMovie2.height = 233;
}
 
var loaderMaska:Loader = new Loader();
var loaderMaska2:Loader = new Loader();
var urlRequestMaska:URLRequest = new URLRequest("maska.png");
loaderMaska.load(urlRequestMaska);
loaderMaska.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadAllProgress);
loaderMaska.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoadedMaska);
function fileLoadedMaska(e:Event):void
{
    loaderMaska.x = 265;
    loaderMaska.y = 0;
    loaderMaska.height = 350;
    loaderMaska2.loadBytes(loaderMaska.contentLoaderInfo.bytes);
    loaderMaska2.x = 265;
    loaderMaska2.y = 0;
    loaderMaska2.height = 350;
}
 
function onLoadAllProgress(e:ProgressEvent):void {
    //trace(e.bytesTotal);
}
 
 
holder.addChild(loaderBitmap);
holder.addChild(loaderMovie);
holder.addChild(loaderMaska);
holder2.addChild(loaderBitmap2);
holder2.addChild(loaderMovie2);
holder2.addChild(loaderMaska2);
holder2.x=900;
 
mc.addChild(holder);
mc.addChild(holder2);
addChild(mc);
mc.x=magicNumber;
// функция для панорамы
stage.addEventListener(Event.ENTER_FRAME,moveObjects);
function moveObjects(e:Event):void
{
    speed=(1-mouseX*2/stage.stageWidth)*maxSpeed;
    mc.x +=  speed;
    speed < 0 && mc.x <  -  magicNumber ? mc.x +=  magicNumber:null;
    speed > 0 && mc.x > 0 ? mc.x -=  magicNumber:null;
 
}

в итоге в holder2 нет ничего кроме bitmap. почему?

Добавлено через 12 минут
вариант второй тоже не работает
Код AS3:

package 
{
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.display.*;
    import flash.utils.ByteArray;
    import fl.transitions.Tween;
    import fl.transitions.easing.*;
    import flash.events.*;
    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.align = StageAlign.TOP_LEFT;
 
    var magicNumber:Number;//Магическое число!:) Размер полного круга панорамы
    var maxSpeed = 3;//Максимальная скорость перемещения панорамы
    var speed:Number;//Текущая скорость и направление, заодно.
 
    var holder:MovieClip=new MovieClip();//клип1 в который все складывается
    createClip(holder);
    var holder2:MovieClip=new MovieClip();//клип2 в который все складывается
    createClip(holder2);
    var mc:MovieClip=new MovieClip();// клип на сцене
    mc.x = 0;
    mc.y = 0;
 
    function createClip(mcc:MovieClip):void
    {
        var loaderBitmap:Loader = new Loader();// фон
        var urlRequestBitmap:URLRequest = new URLRequest("panorama.png");
        loaderBitmap.load(urlRequestBitmap);
        loaderBitmap.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadAllProgress);
        loaderBitmap.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoadedB);
        var loaderMovie:Loader = new Loader();
        var urlRequestMovie:URLRequest = new URLRequest("vid01.swf");
        loaderMovie.load(urlRequestMovie);
        loaderMovie.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoaded);
        loaderMovie.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadAllProgress);
        var loaderMaska:Loader = new Loader();
        var urlRequestMaska:URLRequest = new URLRequest("maska.png");
        loaderMaska.load(urlRequestMaska);
        loaderMaska.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadAllProgress);
        loaderMaska.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoadedMaska);
        mcc.addChild(loaderBitmap);
        mcc.addChild(loaderMovie);
        mcc.addChild(loaderMaska);
    }
    function onLoadAllProgress(e:ProgressEvent):void
    {
        //trace(e.bytesTotal);
    }
    mc.addChild(holder);
    mc.addChild(holder2);
    addChild(mc);
    mc.x = magicNumber;
 
    function fileLoadedB(e:Event):void
    {
        loaderBitmap.x = 0;
        loaderBitmap.y = 0;
        magicNumber = loaderBitmap.width;
    }
    function fileLoaded(e:Event):void
    {
        loaderMovie.x = 270;
        loaderMovie.y = 71;
        loaderMovie.width = 174;
        loaderMovie.height = 233;
    }
 
    function fileLoadedMaska(e:Event):void
    {
        loaderMaska.x = 265;
        loaderMaska.y = 0;
        loaderMaska.height = 350;
    }
 
    stage.addEventListener(Event.ENTER_FRAME,moveObjects);
 
    function moveObjects(e:Event):void
    {
        speed=(1-mouseX*2/stage.stageWidth)*maxSpeed;
        mc.x +=  speed;
        speed < 0 && mc.x <  -  magicNumber ? mc.x +=  magicNumber:null;
        speed > 0 && mc.x > 0 ? mc.x -=  magicNumber:null;
 
    }
}

пожалуйста помогите.


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

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