トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   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さんは書きました:
現在下記のように記述してドラッグを行っていますが
sp自体がドラッグされてしまいます。
対象物だけをドラッグするにはどうすれば良いのでしょうか


----------------
 

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さんは書きました:
画像と円を別々のspriteにすれば、それぞれドラッグ出来ますが
最終的には、clickなどで画像などを追加していき
それらを画面上で動かしたいと思っているのですが
画面に追加されたインスタンスに、名前を適当につけないと駄目なのでしょうか。

あぁ、「プロフィールの編集」では「その他」という項目名になっていますね。
引用:
後、使用環境は プロフィールの編集画面に見当たらないのですが?


----------------
 

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);
}
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops