2015-07-05 52 views
1

是否可以使用一行代碼導入所有這些全局函數?如何在Actionscript 3中用一行代碼導入所有全局函數?

package utils.relocator 
{ 

    public function getCenterX(displayObject:DisplayObject):Number 
    { 
     return displayObject.x + displayObject.width/2; 
    } 

    public function getCenterY(displayObject:DisplayObject):Number 
    { 
     return displayObject.y + displayObject.height/2; 
    } 

    public function setCenterX(displayObject:DisplayObject, newCenterX:Number):void { 
     displayObject.x = newCenterX - displayObject.width/2; 
    } 

    public function setCenterY(displayObject:DisplayObject, newCenterY:Number):void { 
     displayObject.y = newCenterY - displayObject.height/2; 
    } 

} 

我不希望導入這樣的:

import utils.relocator.getCenterX; 
    import utils.relocator.getCenterY; 
    import utils.relocator.setCenterX; 
    import utils.relocator.setCenterY; 

我已經試過:

import utils.*; 

import utils.relocator.*; 

,但現在看來似乎只適用於課程而非全球功能。我得到這樣的錯誤:Error: Call to a possibly undefined method setCenterX

回答

0

你的問題是關於包級的功能,例如像flash.utils包或as3-utils項目,...

而且讓你的包級別功能的工作,你應該把它變成一個.as文件,其中有你的函數的名字,應該和你的包一樣。

因此,對於你的問題,你應該創建4個.as文件(一個爲每個函數)等,例如,爲您getCenterX功能:

文件路徑:

utils/relocator/getCenterX.as 

文件內容:

package utils.relocator 
{ 
    import flash.display.DisplayObject; 

    public function getCenterX(displayObject:DisplayObject):Number 
    { 
     return displayObject.x + displayObject.width/2; 
    } 
} 

然後你將剛剛導入:

然後使用它(使用Ctrl鍵/命令(蘋果機)+ 空間顯示完成彈出菜單):

最後你會得到這樣的事情:

import utils.relocator.*; 

// mc is a MovieClip (100x100) in the stage at (100, 100) 
trace(getCenterX(mc)); // gives : 150 

有關數據包級功能的更多信息,看看herehere

希望能有所幫助。

+0

我試圖像我說的不想要的那樣一個一個地導入這些方法。我的IDE(FlashDevelop)可以識別它們,但是在編譯時我仍然遇到以下錯誤:'調用一個可能未定義的方法setCenterX' –

+0

@DananJeans嘗試驗證是否已將'setCenterX.as'放在正確的路徑中:'utils/relocator '... – akmozo

相關問題