2009-12-24 49 views

回答

0

您使用的startDrag()和調用stopDrag()

0

你的意思是Shape類對象或圖形類對象? Shape類是從DisplayObject派生的,因此不存在對此的交互式支持,也無法實例化Graphics類對象。爲了製作一些拖動gable的東西,需要將圖形放入一些Sprite對象中。

0

這裏是一種方式:

創建一個名爲「Circle」的MovieClip。右鍵單擊庫中的符號,選擇「屬性」>選中「鏈接」框,然後選擇「導出爲Actionscript」。將類命名爲「Circle」。您可以使用flash.display.MovieClip作爲基類。

然後,在同一個文件夾作爲FLA文件,創建一個名爲「Circle.as」的文本文件(記得要使用大寫字母C,像你的名字的影片剪輯),然後鍵入以下內容:

package { 
    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 

    public class Circle extends MovieClip { 
     public function Circle() { 
      this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 
      this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); 

      this.buttonMode = true; 
      this.mouseChildren = false; 
     } 

     private function mouseDownHandler(e:MouseEvent):void { 
      startDrag(); 
     } 

     private function mouseUpHandler(e:MouseEvent):void { 
      stopDrag(); 
     } 
    } 
} 
0

我知道這是一個古老的問題,但它的一個重要方面還沒有得到解決...

您是否引用了一個聲明爲「Graphic」的庫符號(而不是一個MovieClip或按鈕)?

如果您所指的庫符號是「圖形」的概念,那麼您不能。 Graphic可以被認爲是一個榮耀的「羣體」,主要區別在於Graphic存在於圖書館,而一個羣體則不存在。就像一個組織一樣,Graphic允許你在一個單獨的「容器」中收集不同的項目,並在.fla中操作它們,但它實際上不是作爲發佈的swf中的程序化構造存在的...所以你不能添加腳本或命令到圖形,因爲就flash player而言沒有圖形。

作爲實驗,您可以在庫中創建一個動畫片段符號,然後創建另一個包含動畫片段的圖形的庫項目。把這兩對空FLA的第1幀,用下面的代碼:

for(var i:int = 0 ; ilen:int = this.numChildren ; i < ilen ; i++){ 
    trace(this.getChildAt(i)); 
} 

注意兩個孩子是你的影片剪輯...圖形是無處可尋。這就是爲什麼你不能添加任何腳本到圖形。

那麼你能做些什麼來解決這個問題?

如果你絕對需要這個符號是庫中的一個圖形,並且你完全需要能夠將它作爲一個整體進行拖放(或者對其執行任何其他操作),那麼你需要把它放在裏面一個MovieClip容器,然後拖放該MovieClip。

相關問題