2012-07-27 61 views
0

我想從Main.as 這個類調用函數「nextMenu」 &「prevMenu」但我得到的錯誤1136:參數數目不正確。預計1. 可以幫我看看我在代碼中遺漏了什麼嗎?如何從這個類中調用其中一個函數?

CategoryScroller.as

package com.theflashfactor.carouselStackGallery.categoryMenu 
{ 
    import com.greensock.TweenMax; 
    import com.greensock.easing.Quint; 
    import com.theflashfactor.utils.Ref; 

    import flash.display.Shape; 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.geom.Rectangle; 

    /** 
    * Scroller to switch view for category item if there are more than visibleItem available 
    * @author Rimmon Trieu 
    */ 
    public class CategoryScroller extends Sprite 
    { 
     private var trackLength:int = 400; 
     private var scrubber:Sprite; 
     private var track:Shape; 
     private var categoryMenu:CategoryMenu; 
     private var trans:Sprite; 
     private var center:Number; 

     public function CategoryScroller(categoryMenu:CategoryMenu) 
     { 
      this.categoryMenu = categoryMenu; 
      buttonMode = true; 
      initialize(); 
     } 

     /** 
     * Draw elemnt scrubber and track 
     */ 
     private function initialize():void 
     { 
      trans = new Sprite(); 
      trans.graphics.beginFill(0, 0); 
      trans.graphics.drawRect(0, 0, trackLength, 13); 
      trans.graphics.endFill(); 
      trans.addEventListener(MouseEvent.MOUSE_DOWN, transMouseDown, false, 0, true); 
      addChild(trans); 

      // Draw track 
      var color:uint = uint(Ref.getInstance().getRef("categoryCircleColor")); 
      track = new Shape(); 
      track.graphics.lineStyle(1, color); 
      track.graphics.lineTo(trackLength, 0); 
      track.y = 6; 
      addChild(track); 

      // Draw scrubber 
      scrubber = new Sprite(); 
      scrubber.graphics.beginFill(color); 
      scrubber.graphics.drawRect(0, 0, 80, 13); 
      scrubber.graphics.endFill(); 
      center = (trackLength - scrubber.width) >> 1; 
      scrubber.x = center; 
      addChild(scrubber); 

      // Add dragging functionality 
      scrubber.addEventListener(MouseEvent.MOUSE_DOWN, scrubberMouseDown,false,0,true); 
     } 

     private function transMouseDown(event:MouseEvent):void 
     { 
      stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler,false,0,true); 
      TweenMax.killTweensOf(scrubber); 
      categoryMenu.preTransition(); 
      if (mouseX > width - scrubber.width) scrubber.x = (width - scrubber.width); else scrubber.x = mouseX; 
     } 

     /*private function transMouseUp(event:MouseEvent):void 
     { 
      stage.removeEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler); 
      checkPosition(); 
     }*/ 

     private function scrubberMouseDown(event:MouseEvent):void 
     { 
      event.stopImmediatePropagation(); 
      TweenMax.killTweensOf(scrubber); 
      scrubber.startDrag(false, new Rectangle(0, 0, trackLength - scrubber.width, 0)); 
      stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler,false,0,true); 
      categoryMenu.preTransition(); 
     } 

     private function stageMouseUpHandler(event:MouseEvent):void 
     { 
      stage.removeEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler); 
      scrubber.stopDrag(); 
      checkPosition(); 
     } 

     private function checkPosition():void 
     { 
      var targetX:Number = (trackLength - scrubber.width) >> 1; 
      if (scrubber.x > (center + 20)) categoryMenu.postTransition(1); 
       else 
      if (scrubber.x < (center - 20)) categoryMenu.postTransition(-1); 
       else 
       categoryMenu.postTransition(0); 
      TweenMax.to(scrubber, .5, {x:targetX, ease:Quint.easeOut, overwrite:1}); 
     } 

     public function nextMenu():void 
     { 
      categoryMenu.postTransition(1); 
     } 

     public function prevMenu():void 
     { 
      categoryMenu.postTransition(-1); 
     } 
    } 
} 

我插入下面的代碼在我Main.as打電話,我不能讓它成功的功能。

import com.theflashfactor.carouselStackGallery.categoryMenu.CategoryScroller; 
private var categoryScroller:CategoryScroller = new CategoryScroller(); 
categoryScroller.nextMenu(); 

Main.as

package 
{ 
    import com.theflashfactor.carouselStackGallery.CarouselStackGallery; 
    import com.theflashfactor.carouselStackGallery.categoryMenu.CategoryMenu; 
    import com.theflashfactor.carouselStackGallery.categoryMenu.CategoryScroller; 

    import flash.display.Sprite; 
    import flash.display.StageAlign; 
    import flash.display.StageScaleMode; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 
    import flash.geom.Rectangle; 

    import org.casalib.events.LoadEvent; 
    import org.casalib.load.DataLoad; 

    /** 
    * Main document class 
    * @author Rimmon Trieu 
    */ 
    [SWF(frameRate="60", backgroundColor="0", pageTitle="3D Carousel Stack Gallery")] 
    public class Main extends Sprite 
    { 
     private var xmlPath:String = "../xml/Main.xml"; 
     private var ts3:Sprite = new Sprite; 
     private var categoryMenu:CategoryMenu = new CategoryMenu(); 
     private var categoryScroller:CategoryScroller = new CategoryScroller(); 

     public function Main() 
     { 
      stage.align = StageAlign.TOP_LEFT; 
      stage.scaleMode = StageScaleMode.NO_SCALE; 
      addEventListener(Event.ADDED_TO_STAGE, addToStage); 
     } 

     private function addToStage(event:Event):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, addToStage); 
      var xmlLoad:DataLoad = new DataLoad(xmlPath); 
      xmlLoad.addEventListener(LoadEvent.COMPLETE, xmlLoaded); 
      xmlLoad.start(); 

      ts3.graphics.beginFill(0x555555,1); 
      ts3.graphics.drawCircle(0, 0, 50); 
      ts3.graphics.endFill(); 
     } 

     private function xmlLoaded(event:LoadEvent):void 
     { 
      event.target.removeEventListener(LoadEvent.COMPLETE, xmlLoaded); 
      opaqueBackground = uint([email protected]); 
      var gallery:CarouselStackGallery = new CarouselStackGallery(event.target.dataAsXml); 
      addChild(gallery); 

      addChild(ts3); 
      ts3.addEventListener(MouseEvent.MOUSE_DOWN, ts3MouseDown,false,0,true); 
     } 

     private function ts3MouseDown(event:MouseEvent):void 
     { 
      categoryScroller.nextMenu(); 
     } 
    } 
} 
+0

什麼是錯誤信息。當你在實例化後追蹤「categoryScroller」時,結果如何。 – Darcey 2012-07-27 08:46:37

+0

哦,來吧。不要問我們谷歌的'錯誤1136'的含義... ... – strah 2012-07-27 09:06:54

+0

甚至無法追查。一旦我發佈,然後得到錯誤1136:不正確的參數數量。預計1 – pizza0502 2012-07-27 09:39:19

回答

0

定義爲:

public function CategoryScroller(categoryMenu:CategoryMenu) 
{ 
    ... 

不應類構造函數被期望的參數??

private var categoryScroller:CategoryScroller = new CategoryScroller(); 
+0

我私人變種categoryScroller:CategoryScroller = new CategoryScroller();在Main.as中,但仍然無法使其工作並調用該函數。 – pizza0502 2012-07-31 10:44:38

相關問題