2015-08-14 3 views
0

В моем приложении я импортировать MovieClips из библиотеки на сцену так:AS3 дублируется MovieClip

package { 

import flash.display.*; 
import flash.text.*; 
import flash.events.*; 
import flash.ui.Keyboard; 
import flash.ui.Mouse; 
import flash.display.MovieClip; 

public class MainTimeline extends MovieClip { 

    //Variabili 
    public var VFullscreen: int = 1; 

    //Import var   
    public var VTerminal: Terminal = new Terminal(); 
    public var nTerminal:String; 

    public function MainTimeline(): void { 

     stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 

     //Import 

     //Terminal 
     VTerminal.x = 288; 
     VTerminal.y = 384; 
     stage.addChild(VTerminal); 


     //Event Listeners 
     //addEventListener(MouseEvent.CLICK, fl_BringToFront); 
     VTerminal.addEventListener(MouseEvent.MOUSE_DOWN, fl_WindowDrag); 
     VTerminal.addEventListener(MouseEvent.MOUSE_UP, fl_WindowDrop); 
    } 

    //public functions 

    //Gestione Fullscreen 

    public function fl_Fullscreen(event: MouseEvent): void { 
     switch (VFullscreen) { 
      case 0: 
       stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 
       VFullscreen = 1; 
       break; 
      case 1: 
       stage.displayState = StageDisplayState.NORMAL; 
       VFullscreen = 0; 
       break; 
     } 
    } 

    public function fl_FSCheck(event: Event): void { 
     if (stage.displayState == StageDisplayState.NORMAL) { 
      VFullscreen = 0; 
     } 
     if (stage.displayState == StageDisplayState.FULL_SCREEN_INTERACTIVE) { 
      VFullscreen = 1; 
     } 
    } 

    //Primo Piano Finestre 
    public function fl_BringToFront(event: MouseEvent): void { 
     this.addChild(event.currentTarget as DisplayObject); 
    } 


    public function fl_WindowDrag(event: MouseEvent): void { 
     event.currentTarget.startDrag(); 
     nTerminal = event.currentTarget.name.toString(); 
     trace(nTerminal); 
    } 

    public function fl_WindowDrop(event: MouseEvent): void { 
     event.currentTarget.stopDrag(); 
    } 

    //Chiusura 
    public function fl_Close(event: MouseEvent): void { 
     stage.nativeWindow.close(); 
    } 

    //Apertura/Chiusura Terminal 
    public function fl_Terminal(event: MouseEvent): void { 
     if (contains(VTerminal)) { 
      removeChild(VTerminal); 
     } else { 
      VTerminal.x = 288; 
      VTerminal.y = 320; 
      addChild(VTerminal); 
     } 
    } 

} 

}

Но Я странная ошибка, что я никогда не видел. У него был тот же MC дважды, и во время выполнения, когда я перетаскиваю его, я вижу 2 MC один по имени instance8 и один instance45. Я не знаю, как это решить. Спасибо заранее.

ТЕРМИНАЛ КЛАСС

package { 

import flash.display.MovieClip; 
import flash.events.*; 
import flash.ui.Keyboard; 
import flash.text.TextField; 


public class Terminal extends MovieClip { 

    public var version: String = "Verison 0.0.1 a"; 

    public function Terminal(event: Event) { 
     //Varie 
     nome.text = "terminal"; 
     vOut.text = version; 

     //Animazioni 
     loader0.gotoAndPlay(1); 
     loader1.gotoAndPlay(25); 
    } 

} 

}

+0

Непонятно, что вы делаете. Где вы поместили этот код? Как осуществляется перетаскивание? –

+0

Не могли бы вы показать весь код? И проверьте, нет ли у вас уже экземпляра, который вы вставили вручную в рабочую область. – akmozo

+0

Я редактировал полный код и да, на сцене нет экземпляра – LoreSchaeffer

ответ

-1

Насколько я могу видеть, заявление

//Primo Piano Finestre 
public function fl_BringToFront(event: MouseEvent): void { 
    this.addChild(event.currentTarget as DisplayObject); 
} 

когда событие MouseDown и MouseUp закончена, событие mouseEvent.click сработает, поэтому вы получите еще один экземпляр

+0

Это просто литье. Созданного нового экземпляра не создается. – null

+0

Это не может быть эта функция, потому что у меня такая же проблема без этого – LoreSchaeffer

+0

'this.addChild' не создает другого экземпляра. Если добавляемый объект уже добавлен к другому родителю, он будет перемещен. Если он уже добавлен к одному и тому же родительскому элементу, он просто будет перемещен в самый верхний слой. ** Он не будет скопирован ** – BadFeelingAboutThis