2010-08-19 52 views
0

我看到flash.utils package的方法後,我決定做一個嘗試:包級別的功能無法正常工作

// inside file Test.as 

package com.tests 
{ 
internal function packageFunction() { 

} 
} 

但我得到:

的文件在源路徑發現 '測試'必須與 文件 'packageFunction'中的類定義具有相同的名稱 。

packageFunction是一個函數,而不是一個類。任何想法是什麼錯?

--update

對於那些誰不知道什麼是「包功能」我說的是,請參見flash.util package方法。我可以使用它:

flash.utils.getTimer(); 

回答

2

您的代碼在Test.as.它應該是

COM /測試/ packageFunction.as

這遵循相同的規則,「正常」類。包和主公共符號名稱必須加上目錄路徑和文件名。

+0

那麼,爲什麼[flash.utils包](http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html)不需要每個方法都有一個同名文件?對於你也upvoted ..;) – 2010-08-19 15:18:36

+0

也,即使第一個方法與包的名稱相同,第二個給出一個錯誤,告訴「源文件中找到的文件不能有多個外部可見的定義「。 – 2010-08-19 15:34:08

+1

@Tom Brito。 flash.utils是一個包。它可以包含公共符號,如類,接口,函數,變量和常量。每個這些符號都必須在其自己的文件中定義。沒有getTimer()或其他本地代碼的動作代碼。我不知道你是從哪裏得到這樣的想法:「flash.utils包不需要在具有相同名稱的文件中使用每種方法」...... – 2010-08-19 15:34:57

0

如果你的代碼是在Test.as類,你已經是一個包內,你不能有內或包外另一個包,你可以做的是有包裝之外的另一個類

package com.tests 
    { 
     public class Test 
     { 
      private var example:ClassExample = new ClassExample(); 
     } 
    } 

    //This class is only accessible in the Test class 
    class ClassExample 
    { 
     public function ClassExample() 
     { 
     } 
    } 

您給出的例子是對軟件包使用的誤解。文檔中描述的功能可以在任何軟件包中訪問,但並不意味着您可以在現有類中創建軟件包來訪問這些功能。