2011-01-22 108 views
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”也是我要添加到舞台库项目子类。我尝试了几种设置,但无法使其工作。

对我而言最合乎逻辑的似乎是下面的[library item properties]: Class:com.op_pad.pages.FavorietenPage BaseClass:com.op_pad.pages.Page;

使用该类时,我不能放入任何基类,所以我不得不删除基类。 仅使用类时,我得到一大堆错误根本没有任何意义,即使我注释掉了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. 

这对我来说根本没有任何意义。 ? 任何想法如何这种情况下,应使用在此先感谢

+0

如果我下面正确,你必须在你的资料库被称为favorietenPage_mc(或类似名称),它的类名是FavorietenPage,其基类是com.op_pad一个影片剪辑.FavorietenPage和那个扩展的com.op_pad.Page? – Taurayi 2011-01-22 22:46:33

回答

1

你误会了“类”,在属性面板中的“基础类”字段的含义:

的基类的价值默认 到flash.display.MovieClip。除非您使用 自动生成的类 使用外部 类的功能,否则请使用此默认值 。基类不是同义的 具有扩展名;如果您正在指定 自定义类,它自己扩展 另一个类,则不需要指定此超类作为基类 类。在这种情况下,flash.display.MovieClip的默认 是 就足够了。但是,如果你想 两个符号,红鱼和青鱼,以 功能相同,但有 不同的外观,您可以使用 创作工具来创建不同 出场,然后将它们的基类 鱼类和用鱼类在外部Fish.as文件中提供 功能。

(从Adobe Developer Connection