1

ライブラリ クラスの使用は、私を再び混乱させます。次のような状況があります。

package com.op_pad.pages
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;

/**
 * ...
 * @author Martino Wullems
 */
public class Page extends MovieClip 
{
    public var currentPage:String = ""; //help page label
    public var testvar:int = 0;
    var helpPage:HelpPage;

    public function Page(PAGENAME:String = null):void {

        //tweening etc
        addEventListener(Event.ADDED_TO_STAGE, onStage);

        trace("currentPage: " + currentPage);
        trace("testvar: " + testvar);
    }

    private function onStage(e:Event):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, onStage);

        trace("on stgae called");

        try { terug.addEventListener(MouseEvent.CLICK, goback, false, null, true) } catch (e) {  };
        try{homebutton.addEventListener(MouseEvent.CLICK, goHome, false, 0, true)}catch (e) { };
        try { stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown, false, 0, true) } catch (e) { trace("back button fail"); };
        try { help.addEventListener(MouseEvent.CLICK, showHelpPage, false, 0, true) } catch (e) { trace("help not found") };
    }

    public function addListeners():void {

        //try{terug.addEventListener(MouseEvent.CLICK, goback, false, null, true)}catch(e){};
        //try{homebutton.addEventListener(MouseEvent.CLICK, goHome, false, 0, true)}catch (e) { };
        //try{stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown, false, 0, true)}catch (e) {trace("back button fail"); };
    }

    public function goback(e:MouseEvent):void 
    {
        try { MovieClip(parent).loading = false } catch (e) { trace("loading boolean not existent");}
        MovieClip(parent).removeChild(this);
    }

    private function goHome(e:MouseEvent):void 
    {
        try { MovieClip(parent).loading = false } catch (e) { trace("loading boolean not existent");}
        MovieClip(parent).removeChild(this);
    }

    private function showHelpPage(e:MouseEvent):void 
    {
        helpPage = new HelpPage();
        addChild(helpPage);
        helpPage.gotoAndStop(currentPage);

        trace("help page called, currentPage: " + currentPage);
    }

    private function onKeyDown(e:KeyboardEvent):void 
    {   
        //when keyboard back is pressed
        if (e.keyCode == Keyboard.BACK) {

        e.preventDefault();
        e.stopImmediatePropagation();
            goback(null);
        }
    }   
}   
}

ずさんなコード、まだクリーンアップが必要です。

Page クラスを継承する子クラス

package
{
import com.op_pad.pages.Page;

/**
 * ...
 * @author Martino Wullems
 */
public class FavorietenPage extends Page
{

    public function FavorietenPage():void
    {
        trace("favorietenpage called");

        super();
        currentPage = "favorieten";
    }   
}
}

「FavorietenPage」もステージに追加したいライブラリアイテムです。いくつかのセットアップを試しましたが、機能させることができません。

私にとって最も論理的なのは、次の [ライブラリ項目のプロパティ] のようです。 Class: com.op_pad.pages.FavorietenPage

クラスを使用するときに基本クラスを入れることができないため、基本クラスを削除せざるを得ません。クラスのみを使用すると、まったく意味をなさない大量のエラーが発生し、Page クラスのすべてのコードをコメントアウトしても表示されます。

com\op_pad\pages\FavorietenPage.as:7: 1152: A conflict exists with inherited definition com.op_pad.pages:Page.help in namespace public.

com\op_pad\pages\FavorietenPage.as:12: 1152: A conflict exists with inherited definition com.op_pad.pages:Page.terug in namespace public.

com\op_pad\pages\FavorietenPage.as:21: 1152: A conflict exists with inherited definition com.op_pad.pages:Page.home in namespace public.

これは私にはまったく意味がありません。この状況をどのように使用すべきか考えていますか?事前に感謝します

4

1 に答える 1

1

プロパティパネルの「クラス」フィールドと「基本クラス」フィールドの意味を誤解しました。

基本クラスの値のデフォルトはflash.display.MovieClip。です。外部クラスの機能を使用する自動生成されたクラスを使用している場合を除き、このデフォルトを使用してください。基本クラスは拡張機能と同義ではありません。それ自体が別のクラスを拡張するカスタムクラスを指定する場合、このスーパークラスを基本クラスとして指定する必要はありません。この状況では、デフォルトのでflash.display.MovieClip十分です。ただし、RedFishとBlueFishの2つのシンボルを同じように機能させたいが、スキンを変えたい場合は、オーサリングツールを使用して異なる外観を作成し、それらの基本クラスをFishに設定して、外部のFish.asでFishクラスを使用できます。両方の魚に機能を提供するファイル。

Adobe Developer Connectionから)

于 2011-01-23T21:33:06.207 に答える