0

私はこれを知っておくべきだと思います...まあ、私はどんな助けも大好きです. そこで、画像スライダー クラスを作成し、マスクの位置まで正常に動作しました。私のホーム クラスでは、イメージ スライダー クラスのインスタンスを作成し、それに応じて配置します。スライダー クラスの画像は、マスクに使用する形状と同様に 0, 0 の位置にあります。これは、マスクの配置が、スライダーのクラス x:0、x:0 ではなく、stage.x = 0、stage.y = 0 にあるという問題です。スライダー インスタンスが正しい位置に表示されているのに、インスタンス内のマスクが表示されていないのはなぜですか? 助けてくれてありがとう

これは私のホームページクラスにあります

  private function buildSlider() : void {
     slider = new Slider(arrSilde);
     slider.x = btnWidth + 15;
     addChild(slider);
  }

そして、これがSliderクラスです

  private var t : Timer;
  private var counter : int;

  private var slideArr : Array;
  private var currentSlide : HomeSliderPageObj;
  private var oldSlide : HomeSliderPageObj;

  private var masker : Shape;


  public function Slider(_arr : Array) {
     super();
     slideArr = _arr;

     currentSlide = _arr[counter];
     buldSlider();

     addChild(currentSlide.image);

     t = new Timer(2000);
     t.addEventListener(TimerEvent.TIMER, changeSlide);
     t.start();
  }


  private function buldSlider() : void {
     masker = new Shape;
     masker.graphics.lineStyle();
     masker.graphics.beginFill(0x000000, 1);
     masker.graphics.drawRect(0,0, currentSlide.image.width, currentSlide.image.height);
     masker.graphics.endFill();
     masker.x = currentSlide.image.x;
     masker.y = currentSlide.image.y;
     this.mask = masker;
  }


  private function changeSlide (event : TimerEvent) : void {
     if (counter >= slideArr.length){ counter = 0; } 
     else { ++counter; }

     oldSlide = currentSlide as HomeSliderPageObj;
     addChild(oldSlide.image);

     removeChild(currentSlide.image);
     currentSlide = slideArr[counter];
     currentSlide.image.x = currentSlide.image.width;
     addChild(currentSlide.image);

     TweenMax.to(oldSlide.image, .5, {x:oldSlide.image.width*(-1), onComplete:clean});
     TweenMax.to(currentSlide.image, .5, {x:0});
  }


  private function clean () : void {
     removeChild(oldSlide.image);
     oldSlide = null;
  }
4

1 に答える 1

0

これが機能するかどうかを確認してください。

    currentSlide = _arr[counter];
    buldSlider(); //this creates the mask shape

    addChild(currentSlide); //this add the image movieclip
    currentSlide.mask = masker; //this sets the masking

 private function buldSlider() : void {
     masker = new Shape;
     masker.graphics.lineStyle();
     masker.graphics.beginFill(0x000000, 1);
     masker.graphics.drawRect(0,0, currentSlide.image.width, currentSlide.image.height);
     masker.graphics.endFill();
     masker.x = currentSlide.image.x;
     masker.y = currentSlide.image.y;
     addChild(masker);
  }
于 2012-01-17T16:01:31.540 に答える