2012-01-17 20 views
0

私はこれを知るべきだと感じています...私はどんな助けも愛しています。だから私はイメージスライダクラスを作って、マスクの位置までうまく動作します。私のホームクラスでは、イメージスライダークラスのインスタンスを作成し、それに応じて配置します。スライダークラスの画像は、0、0の位置、およびマスクに使用するシェイプです。ここで、マスクの配置は、スライダのクラスx:0、x:0ではなく、stage.x = 0、stage.y = 0にあるという問題があります。スライダのインスタンスが正しい位置に表示されますが、インスタンスのマスクが表示されないのはなぜですか?おかげで任意のヘルプAdob​​e Flash AS3マスク配置

のためにこれは私のホームページのクラスに

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; 
    } 
+0

addChild()にはどのようなマスカーオブジェクトがありますか?私はあなたのコードのどこにもそれを見ることができません。そして:あなたはmasker.xとmasker.yをトレースしようとしましたか? –

+0

本当にありがとうございました。 –

答えて

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); 
    } 
+0

マスカーを表示リストに追加するのを忘れてしまいました –

関連する問題