私のイメージをAS3ですばらしいものにしようとしています。私は "動く背景"の効果を作りたいと思っています。例えば、私のイメージは200×200、私のマスクは200×40です。私がマウスを動かすと、背景を動かしてマスクを置いておきます。AS3反転マスク、MouseEvent.ROLL_OVERがマスクを移動します
AS3には反転マスクオプションがないため、私はBlendModeを使用して親レイヤにマスクを追加する必要があります。私が思うところで問題がどこに来るのですか?マスクのY位置(マスクではMouseEventsを有効にできないのでできない)を変更したい場合は、そのすべてまたはすべてを無効にします。画像全体が下に来るか(マスクを含む)、何も起こらない。
これは私のコードの一部ですが、私は本当に誰かがこのやや簡単に見える問題を修正する方法を知っていることを願っています。うん! (画像を読み込むことを担当するカスタムImageLoaderクラスがあります)
var imageLoader:ImageLoader = new ImageLoader();
imageLoader.url = "image.jpg";
imageLoader.blendMode = BlendMode.LAYER;
imageLoader.addEventListener(ImageLoader.IMAGE_LOADED, imageLoadedHandler);
var maskContainer:Sprite = new Sprite();
with (maskContainer.graphics) {
beginFill(0x000000);
drawRect(0, 0, 200, 40);
endFill();
}
maskContainer.blendMode = BlendMode.ERASE;
private function imageLoadedHandler(e:Event):void {
// Ofcourse, here is where the problem starts.
// I HAVE to addChild the mask to the imageLoader, so everything comes down/up.
addChild(imageLoader);
imageLoader.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
imageLoader.addChild(maskContainer);
}
private function rollOverHandler(e:MouseEvent):void {
imageLoader.removeEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
imageLoader.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
}
private function mouseMoveHandler(e:MouseEvent):void{
trace("move");
imageLoader.y = e.currentTarget.mouseY;
}
ありがとうございます。
私はあなたがこのすべてを通過する必要がある理由は、なぜあなただけのイメージ、およびマスクを作成し、マウスオーバーで画像を移動し、マスクの静止を維持することはできません理解していませんか? – Daniel
それは私がダニエルをしようとしていることです。問題は、反転したマスクが必要なので(私は200x40の四角形の中だけを見たいと思っています)、ここで説明したように、マスクを画像に追加してブレンドモードを変更する必要があります。 http://franto.com/inverse-masking-disclosed – Nick
あなたはそれを複雑にしているようですが、あなたが必要とするより簡単なブロック/プロトタイプに煮詰めてみてください。私が下に示した例を見てください。あなたはマスクを反転させる必要はありません。そうすることが意図されているので、このようなもののブレンドモードは必要ありません。 – Daniel