コードを少し書き直しましたが、テストできませんでした。
私が最初に気づいたのは、あなたのinit
メソッドがあなたのメソッドの中にあったということMain
です。次に、あなたtakeIt
のdropIt
メソッドは の中にありましたinit
。それが実際に機能するかどうかはわかりませんが、以下のコードで修正しました。
私のコードでは、Images
クラス内にある画像インスタンスは のインスタンスであると想定していますBitmap
。これは、for
ループ内でそれぞれを a に追加する必要があったため、 andSprite
にアクセスできることを意味します。各画像のイベントをリッスンし、画像をvar に設定して startDrag を実行します。で もリッスンし、currentImage をドロップします。startDrag
stopDrag
MOUSE_DOWN
selectedImage
MOUSE_UP
stage
package
{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends Sprite
{
private var selectedImage:Sprite;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var imageContainer:Sprite = new Sprite();
var imgClass:Images = new Images();
for (var i:int = 0; i < 9; i++)
{
var imgInstance:Bitmap = imgClass['s' + i.toString()] as Bitmap;
var imgSprite:Sprite = new Sprite();
imgSprite.addChild(imgInstance); // Put image in a sprite so we can use startDrag on it.
imageContainer.addChild(imgSprite);
imgInstance.addEventListener(MouseEvent.MOUSE_DOWN, img_mouseDownHandler);
}
addChild(imageContainer);
stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler);
}
private function dropSelectedImage():void
{
if (selectedImage)
{
selectedImage.stopDrag();
}
}
private function img_mouseDownHandler(e:MouseEvent):void
{
dropSelectedImage();
selectedImage = e.currentTarget as Sprite;
selectedImage.startDrag();
}
private function stage_mouseUpHandler(e:MouseEvent):void
{
dropSelectedImage();
}
}
}
ループで画像を構築するには、配列を手動で構築してから、次のように配列をループすることもできます。
var images:Array = [imgClass.s0, imgClass.s1, imgClass.s2, imgClass.s3, imgClass.s4, imgClass.s5, imgClass.s6, imgClass.s7, imgClass.s8];
for each (var img:Bitmap in images)
{
var imgSprite:Sprite = new Sprite();
imgSprite.addChild(img); // Put image in a sprite so we can use startDrag on it.
imageContainer.addChild(imgSprite);
imgInstance.addEventListener(MouseEvent.MOUSE_DOWN, img_mouseDownHandler);
}
この助けを願っています。コメントで詳しく説明したり、他のことを説明したりするには、お気軽にお問い合わせください。