Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   FAQ (http://www.flasher.ru/forum/forumdisplay.php?f=86)
-   -   [as3]Динамическая смена родителя мувиклипа (http://www.flasher.ru/forum/showthread.php?t=79872)

Nirth 17.05.2006 22:08

[as3]Динамическая смена родителя мувиклипа
 
Мы очень долго мучались о том как же изменить родителя у дублированного клипа, или у загруженного, выход был всего один это использовать attachMovie, но теперь благодаря тому, что новые экземпляры MovieClip ( Sprite и остальных детей DisplayObject ) создаються с помощью оператора new и добавляються через addChild() или addChildAt() дает нам такую возможность.

Код:

package com.onorange.faq{
        import flash.display.*;
        import flash.events.*;
        public class MoveMC extends Sprite {
                private var win1:Window;
                private var win2:Window;
                private var rect:Rect;
                public function MoveMC() {
                        win1 = new Window(20,20);
                        win2 = new Window(240,20);
                        rect = new Rect(win1,win2);
                        win1.addChild(rect);
                        addChild(win1);
                        addChild(win2);
                }
        }
}
class Window extends Sprite {
                public function Window (x:int,y:int) {
                        graphics.beginFill(0xFF6600);
                        graphics.drawRect(0,0,200,200);
                        graphics.endFill();
                        this.x = x;
                        this.y = y;
                }
        }
class Rect extends Sprite {
        private var win1:Window;
        private var win2:Window;
        private var curWin:Window;
        public function Rect(win1:Window,win2:Window) {
                curWin = win1 = win1;
                win2 = win2;
                graphics.beginFill(0xFFFFFF);
                graphics.drawRect(0,0,50,50);
                graphics.endFill();
                addEventListener(MouseEventType.CLICK,onClick);
        }
        private function onClick(evt:MouseEvent):Void {
                if(curWin == win1) {
                        win1.removeChild(this);
                        win2.addChild(this);
                        curWin = win2;
                }else{
                        win2.removeChild(this);
                        win1.addChild(this);
                        curWin = win1;
                }
        }               
}



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

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