メイン ActionScript 3.0 特設会議室 選択した対象物のドラッグ | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
moritan | Åê¹ÆNo.40367 投稿日時: 2008-9-24 18:42 |
新米 居住地: 投稿: 5
使用環境:
CS3 XpSP3 FlashPlayer9.0.124 |
選択した対象物のドラッグ 現在下記のように記述してドラッグを行っていますが
sp自体がドラッグされてしまいます。 対象物だけをドラッグするにはどうすれば良いのでしょうか よろしくお願いいたします。 var sp:Sprite = new Sprite(); var loader:Loader = new Loader(); loader.load(new URLRequest("star.gif")); sp.graphics.lineStyle(0); sp.graphics.beginFill(0x000000); sp.graphics.drawCircle(0,0,20); sp.graphics.endFill(); addChild(sp); sp.addChild(loader); sp.addEventListener(MouseEvent.MOUSE_DOWN, startDragHandler); sp.addEventListener(MouseEvent.MOUSE_UP, stopDragHandler); function startDragHandler(event:MouseEvent):void { var mySpr:Sprite = event.currentTarget as Sprite; setChildIndex(mySpr, numChildren - 1); mySpr.startDrag(); } function stopDragHandler(event:MouseEvent):void { var mySpr:Sprite = event.currentTarget as Sprite; mySpr.stopDrag(); }
|
野中文雄 | Åê¹ÆNo.40369 投稿日時: 2008-9-24 21:33 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 選択した対象物のドラッグ まず、スクリプトにも説明が必要です。→【スクリプトを見てください】
また、「対象物」というのは、何を指すのでしょう?→【第三者から見てわからない】 いずれにしても、Sprite.startDrag()およびSprite.stopDrag()は、Spriteインスタンスをマウスポインタに追随させ、あるいはそれを停止するためのメソッドです。引用のスクリプトでは、Spriteインスタンスはspのみのようですから、それがドラッグされるのは当然の結果です。 もし、Loaderインスタンスを一緒にドラッグさせたくないという意味でしたら、Spriteインスタンスの子に加えなければ(DisplayObjectContainer.addChild()メソッドを呼ばないようにすると)よいと思います。 なお、使用環境はプロフィールに記載することをお勧めします。 引用: moritanさんは書きました: |
moritan | Åê¹ÆNo.40371 投稿日時: 2008-9-25 6:22 |
新米 居住地: 投稿: 5
使用環境:
CS3 XpSP3 FlashPlayer9.0.124 |
Re: 選択した対象物のドラッグ 野中さんすいませんでした。
画像と円を作成してSprite上に表示したものを それぞれドラッグして、動かせればと思ったのです。 画像と円を別々のspriteにすれば、それぞれドラッグ出来ますが 最終的には、clickなどで画像などを追加していき それらを画面上で動かしたいと思っているのですが 画面に追加されたインスタンスに、名前を適当につけないと駄目なのでしょうか。 後、使用環境は プロフィールの編集画面に見当たらないのですが? よろしくお願いいたします。
|
野中文雄 | Åê¹ÆNo.40372 投稿日時: 2008-9-25 7:19 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 選択した対象物のドラッグ Spriteにすると、具体的に何が問題なのかわかりかねます。しかし少なくとも、Sprite(あるいはそのサブクラス)のインスタンスでなければ、Sprite.startDrag()およびSprite.stopDrag()メソッドは使えません。
「名前」というのは、変数に参照を入れることですか?取りあえず、「外部imgを読み込みloaderクラスにドラッグイベントを追加したいです」は参考になるでしょうか? 引用: moritanさんは書きました: あぁ、「プロフィールの編集」では「その他」という項目名になっていますね。 引用: 後、使用環境は プロフィールの編集画面に見当たらないのですが? |
moritan | Åê¹ÆNo.40379 投稿日時: 2008-9-26 18:13 |
新米 居住地: 投稿: 5
使用環境:
CS3 XpSP3 FlashPlayer9.0.124 |
Re: 選択した対象物のドラッグ 野中様
有難う御座いました。 参考のサイトを元に複数の画像でも 個別にドラッグ出来るようになりました。 環境設定はその他だったんですね・・・ var sp:Sprite = new Sprite(); addChild(sp); stage.addEventListener(MouseEvent.CLICK,loadImg); var nX:Number = 0; var nY:Number = 0; var imgArray:Array = ["star.gif","1.gif"]; function loadImg(e:MouseEvent):void{ var img_loader:Loader = new Loader(); var _num:int = 0; _num = Math.round(Math.random()*1); var urlreq:URLRequest = new URLRequest(imgArray[_num]); sp.addChild(img_loader); img_loader.addEventListener(MouseEvent.MOUSE_DOWN,onDragStart); img_loader.addEventListener(MouseEvent.MOUSE_UP,onDragStop); img_loader.load(urlreq); } function onDragStart(e:MouseEvent):void { e.currentTarget. addEventListener(Event.ENTER_FRAME, xFollowMouse); addEventListener(MouseEvent.MOUSE_OUT,reset); nX = e.localX; nY = e.localY; } function onDragStop(e:Event):void { e.currentTarget. removeEventListener(Event.ENTER_FRAME, xFollowMouse); } function xFollowMouse(eObject:Event):void { var myObject:DisplayObject = DisplayObject(eObject.currentTarget); myObject.x += myObject.mouseX-nX; myObject.y += myObject.mouseY-nY; stage.removeEventListener(MouseEvent.CLICK,loadImg); } function reset(e:MouseEvent):void{ stage.addEventListener(MouseEvent.CLICK,loadImg); } |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |