ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
フォーラム一覧   -   トピック一覧
   Flex Framework 2.0
     ドラッグ&ドロップで、Copy禁止、Moveのみにしたい。
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
daisuke
投稿日時: 2007-3-10 10:30
一見さん
登録日: 2007-3-9
居住地: 東京都
投稿: 3
ドラッグ&ドロップで、Copy禁止、Moveのみにしたい。
はじめまして。daisukeと申します。
ドラッグ&ドロップについてですが、ご存知の方がいらっしゃいましたらよろしくお願いいたします。

下記のコードにて、itemをTileList間でドラッグ&ドロップすると、アイテムが移動するのですが、CTRLを押しながらドロップすると、コピーになってしまいます。
このコピーを禁止し、移動だけが行えるようにするにはどのようにすれば良いのでしょうか?


	<mx:HBox width="100%" height="100%">
		<mx:TileList id="left" dataProvider="{dp}"
			dragEnabled="true" dropEnabled="true" dragMoveEnabled="true"
			width="100%" height="100%"/>
		<mx:TileList id="right"
			dragEnabled="true" dropEnabled="true" dragMoveEnabled="true"
			width="100%" height="100%"/>
	</mx:HBox>
	
	<mx:Script>
    	<![CDATA[
    		import mx.collections.ArrayCollection;
    		
	    	private var list:Array = [
	    		{label: "item0", data: 0}, {label: "item1", data: 1},
	    		{label: "item2", data: 2}, {label: "item3", data: 3}
	    	];
	    	
	    	[Bindable]
	    	private var dp:ArrayCollection;
	    	
	        private function initApp():void {
	        	dp = new ArrayCollection(list);
	        }
		]]>
	</mx:Script>
gekotan
投稿日時: 2007-3-11 12:47
やや 常連さん
登録日: 2007-1-21
居住地: 愛知県一宮市
投稿: 25
Re: ドラッグ&ドロップで、Copy禁止、Moveのみにしたい。
gekotanです。

Drag側のdragCompleteイベントの中で、actionをDragManager.MOVEにしてやればできます。

具体的には以下のようになります。


<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="horizontal"
	 creationComplete="initApp()">
<mx:HBox width="100%" height="100%">
		<mx:TileList id="left" dataProvider="{dp}"
			dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" dragComplete="doDragComplete(event)"
			width="100%" height="100%"/>
		<mx:TileList id="right"
			dragEnabled="true" dropEnabled="true" dragMoveEnabled="true" dragComplete="doDragComplete(event)"
			width="100%" height="100%"/>
	</mx:HBox>
	
	<mx:Script>
    	<![CDATA[
    		import mx.events.DragEvent;
    		import mx.collections.ArrayCollection;
    		import mx.managers.DragManager;
    		
    		
	    	private var list:Array = [
	    		{label: "item0", data: 0}, {label: "item1", data: 1},
	    		{label: "item2", data: 2}, {label: "item3", data: 3}
	    	];
	    	
	    	[Bindable]
	    	private var dp:ArrayCollection;
	    	
	        private function initApp():void {
	        	dp = new ArrayCollection(list);
	        }
	        
	        private function doDragComplete(evt:DragEvent):void{
	        	evt.action = DragManager.MOVE;
	        }
	        
		]]>
	</mx:Script>	
</mx:Application>


この例だと、両方必要みたいなので両方に書いてます。
daisuke
投稿日時: 2007-3-11 21:45
一見さん
登録日: 2007-3-9
居住地: 東京都
投稿: 3
Re: ドラッグ&ドロップで、Copy禁止、Moveのみにしたい。
dragCompleteイベントでactionを修正してやれば良かったんですね。
助かりました。どうもありがとうございます!
daisuke
投稿日時: 2007-3-11 22:31
一見さん
登録日: 2007-3-9
居住地: 東京都
投稿: 3
Re: ドラッグ&ドロップで、Copy禁止、Moveのみにしたい。
自分で補足。


private function doDragComplete(evt:DragEvent):void {
	if(evt.action != DragManager.NONE) {
		evt.action = DragManager.MOVE;
	}
}


こうしておかないと、変な所にドロップして、evt.action が NONE の時に、アイテムが消えてしまいますね。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を