Метод интерфейса newFrame в ошибке пространства имен во флэш-памяти cs5 - PullRequest
1 голос
/ 11 декабря 2010

Я пытаюсь запустить Tuio во флэш-памяти и получаю эту ошибку:

Line 10 1044: Interface method newFrame in namespace org.tuio:ITuioListener not implemented by class TuioExampleDrawingCursor.

Я не уверен, что делать, чтобы исправить это, потому что я переучиваю вспышку после длительного перерыва. Вот код, используемый в:

    package {

  import org.tuio.*;
  import org.tuio.osc.*;
  import org.tuio.connectors.*;
  import flash.display.*;
  import flash.ui.*;
  import flash.events.*;

  public class TuioExampleDrawingCursor extends MovieClip implements ITuioListener {

    private var circleSize:Number;

    private var tuio:TuioClient;

    public function TuioExampleDrawingCursor(){

      this.circleSize = 10;

      stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);

      stage.scaleMode = StageScaleMode.NO_SCALE;
      stage.align = StageAlign.TOP_LEFT;

      /* Uncomment the connection type you want to use
       * comment or remove the other one
       * LocalConnection is the connection method used by default
       */

      this.tuio = new TuioClient(new LCConnector());
      this.tuio.addListener(this);

      //this.tuio = new TuioClient(new TCPConnector());
      //this.tuio.addListener(this);

    }

    public function handleKeyDown(event:KeyboardEvent):void {  
      if (event.keyCode == Keyboard.DOWN){
        this.circleSize -= 2;
      } else if (event.keyCode == Keyboard.UP){
        this.circleSize += 2;
      }
    }

    public function addTuioCursor(tuioCursor:TuioCursor):void {
      new Circle(tuioCursor.sessionID.toString(), stage, tuioCursor.x*stage.stageWidth, tuioCursor.y * stage.stageHeight, this.circleSize, 0xee3333);
    }

    public function updateTuioCursor(tuioCursor:TuioCursor):void {
      var currentCircle:Circle = stage.getChildByName(tuioCursor.sessionID.toString()) as Circle;
      currentCircle.x = tuioCursor.x*stage.stageWidth;
      currentCircle.y = tuioCursor.y*stage.stageHeight;
    }

    public function removeTuioCursor(tuioCursor:TuioCursor):void {
      var currentCircle:Circle = stage.getChildByName(tuioCursor.sessionID.toString()) as Circle;
      stage.removeChild(currentCircle);
    }

    public function addTuioObject(tuioObject:TuioObject):void {}
    public function updateTuioObject(tuioObject:TuioObject):void {}
    public function removeTuioObject(tuioObject:TuioObject):void {}
    public function addTuioBlob(tuioBlob:TuioBlob):void {}
    public function updateTuioBlob(tuioBlob:TuioBlob):void {}
    public function removeTuioBlob(tuioBlob:TuioBlob):void {}
  }
}

любая помощь будет очень полезна.

1 Ответ

0 голосов
/ 11 декабря 2010

Когда вы реализуете интерфейс, вы должны реализовать все методы, определенные в интерфейсе.В вашем случае метод newFrame (), определенный в интерфейсе ITuioListener, не был реализован в TuioExampleDrawingCursor.Добавьте метод newFrame () из ITuioListener в TuioExampleDrawingCursor, и он должен работать.

Ниже приведен пример класса, реализующего интерфейс:

package
{
    import com.Automobile;
    import flash.display.MovieClip;

    public class Main extends MovieClip
    {
        public function Main():void
        {
            init();

        }// end function

        private function init():void
        {
            var automobile:Automobile = new Automobile();

        }// end function

    }// end class

}// end package

В классе документа Main импортируется класс Automobile, а затем создается экземпляр Automobile.

package com
{
    import com.IDrivable;

    public class Automobile implements IDrivable
    {
        public function Automobile():void {}// end function

        public function startEngine():void
        {
            // start automobile's engine

        }// end function

        public function stopEngine():void
        {
            // stop automobile's engine

        }// end function

        public function accelerate():void
        {
            // accelerate automobile

        }// end function

        public function turn(p_dir:String):void
        {
            // turn automobile

        }// end function

    }// end class

}// end package

В классе Automobile импортируется и реализуется интерфейс IDrivable.Методы startEngine (), stopEngine (), accelerate () и turn (), которые все определены в IDrivable, реализованы в Automobile.

package com
{
    public interface IDrivable
    {
        function startEngine():void

        function stopEngine():void

        function accelerate():void

        function turn(p_dir:String):void

    }// end interface

}// end package

В интерфейсе IDrivable методы startEngine (), stopEngine (), accelerate () и turn () определены.

Мало того, что вы должны реализовывать методы в интерфейсе, соответствующие методы должны иметь соответствующие сигнатуры.Это означает, что они должны иметь одинаковые параметры и возвращаемые типы.

...