2012-06-18 58 views
1

所以我有兩個類的A類B類AS3:從一個類到另一個的呼叫功能

我有希望在A類使用功能,但我的Flash FLA文件鏈接到B

所以我也做了以下內容:

A類 - 的功能

public function Fb_Checks() 
    { 
     // constructor code 
     load_top_bar(); 
    } 

B類 - 進口

import ClassA; 

然後,如果我嘗試從B類中調用A類功能:

Fb_Checks(); 

我收到以下錯誤:

Call to a possibly undefined method Fb_Checks.

有更多的東西我應該做的事讓這個工作?

回答

2

您需要了解更多關於OOP的信息。它如何工作,那麼理解概念會更容易。

現在簡單的解釋:我們有ClassA的ClassB的ClassC

ClassA 
{ 
    var value:ClassB; 

    public function ClassA() 
    { 
     // each variable needs to initialize unless it is the ClassC, see below 
     // Only after that you will be able to reach the public properties 
     // of the class. 
     value = new ClassB(); 
     value.calculate(); 
    } 
} 

ClassB 
{ 
    var value:Number; 

    public function ClassB() 
    { 

    } 

    public function calculate():void 
    { 
     // these must be statis 
     ClassC.sum(150, 450); 
    } 
} 

ClassC 
{ 
    // if the function is static, then you can call it without initializing 
    // the class 
    static public function sum(value1:Number, value2:Number):Number 
    { 
     return value1 + value2; 
    } 
} 
1

您必須先創建ClassA的實例,然後才能調用其公共函數。

package 
{ 
    import ClassA; 

    public class ClassB 
    { 

     public function ClassB() 
     { 
      var instanceOfA:ClassA = new ClassA(); 

      instanceOfA.Fb_Checks(); 
     } 
    } 
} 

如果你想使它像你的例子一樣工作,你應該用ClassA擴展你的ClassB。在這種情況下,它是公共的,受保護的功能也可以在ClassB中使用。

package 
{ 
    import ClassA; 

    public class ClassB extends ClassA 
    { 

     public function ClassB() 
     { 
      Fb_Checks(); 
     } 
    } 
} 
+0

所以我想它就像你的底例如,從ClassB的工作除了已經延伸「影片剪輯」和你不能擴展可以嗎? –

+0

不可以,但是如果ClassA擴展了MovieClip,ClassB也會繼承MovieClip –

+1

是的,您可以:'ClassA擴展MovieClip'和'ClassB擴展ClassA'。而'ClassB'將能夠訪問'ClassA'和'MovieClip'中的所有'public',''''''internal'函數。 –