私はこれを知っておくべきだと思います...まあ、私はどんな助けも大好きです. そこで、画像スライダー クラスを作成し、マスクの位置まで正常に動作しました。私のホーム クラスでは、イメージ スライダー クラスのインスタンスを作成し、それに応じて配置します。スライダー クラスの画像は、マスクに使用する形状と同様に 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;
}