2012-05-14 14 views
0

私はギャラリーのように画像を表示するためにTileListを操作します。 最初はドラッグオプションのみを有効にします。mx:TileList:allowMultipleSelectionがアクティブな場合にドラッグが効かない理由

<mx:TileList xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" 
     columnWidth="120" 
     rowHeight="150" 
     paddingLeft="2" 
     paddingRight="2" 
     paddingTop="2" 
     paddingBottom="2" 
     itemRenderer="fr.ui.display._43Imagerie.TileUnit2" 
     doubleClickEnabled="true" 
     dragEnabled="true" 
     dropEnabled="true" 
     dragMoveEnabled="true" 
     verticalScrollPolicy="on" 
     > 

複数の選択肢を追加しようとしています。

たItemRendererがある:

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" 
     verticalScrollPolicy="off" 
     horizontalScrollPolicy="off" 
     width="120" 
     height="150" 
     borderVisible="false" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     creationComplete="onEvent()" 

     > 
<mx:Script> 
    <![CDATA[ 
     import fr.util.imageTransform; 

     import mx.controls.Image; 
     import mx.core.UIComponent; 
     import mx.events.DragEvent; 
     import mx.managers.DragManager; 

     import org.osmf.utils.URL; 

     import spark.effects.Rotate; 

     [Bindable] 
     [Embed(source="icon/imagerie/rotate.png")] 
     private var rotationArrowClass:Class; 

     private var _file:File; 
     private var _selected:Boolean; 
     private var _sauvBMD:BitmapData; 
     public var wasScaled:Boolean = false; 
     public var deleted:Boolean = false; 
     private var bgCenterX:Number; 
     private var bgCenterY:Number; 
     private var _dragDownPt:Point; 

     [Bindable] 
     public var angle:int = 0; 

     private var dragBitmapData : BitmapData; 

     private function onEvent():void 
     { 
      // iconCanvas.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClick); 
      // double click gere ds wPlanchePhoto3 

     } 








     private function rotationImage(e:MouseEvent):void 
     { 

      var rot:Rotate = new Rotate(); 
      rot.angleBy = 90; 
      rot.duration = 1000; 
      rot.autoCenterTransform = true; 
      rot.target = iconCanvas; 
      rot.play(); 

     } 

     private function radiansToDegrees(radians:Number):Number { 
      var degrees:Number = radians * (180/Math.PI); 
      return degrees; 
     } 

     private function degreesToRadians(degrees:Number):Number { 
      var radians:Number = degrees * (Math.PI/180); 
      return radians; 
     } 

     public function set image(im:BitmapData):void 
     { 
      this._sauvBMD=im; 
     } 

     public function get image() :BitmapData 
     { 
      return this._sauvBMD; 
     } 



     protected function iconCanvas_mouseDownHandler(event:MouseEvent):void 
     { 

      // on enregistre la point de départ 
      _dragDownPt = new Point(mouseX,mouseY); 
      // puis on écoute l'éventuel déplacement de la souris 
      this.addEventListener(MouseEvent.MOUSE_MOVE,_onMouseMoveDuringDrag); 


     } 

     private function _onMouseMoveDuringDrag(evt:MouseEvent):void { 
      // astuce pour s'assurer que la souris a vraiment bougee volontairement 
      if(Math.abs(_dragDownPt.x - mouseX) <= 2 && Math.abs(_dragDownPt.y - mouseY) <= 2) 
       return; 

      else{ 
       dragBitmapData = new BitmapData(iconCanvas.width, iconCanvas.height,true, 1); 
       dragBitmapData.draw(iconCanvas); 

       var transfert:Clipboard = new Clipboard(); 
       transfert.setData(ClipboardFormats.BITMAP_FORMAT,Bitmap(iconCanvas.content).bitmapData); 

       // only allow the file to be copied 
       var dragOptions:NativeDragOptions = new NativeDragOptions(); 
       dragOptions.allowMove=false; 
       dragOptions.allowCopy = true; 
       dragOptions.allowLink = false; 

       // begin the drag 
       NativeDragManager.doDrag(this, transfert, dragBitmapData, null, dragOptions); 
      } 
      // dispatch de l'event depuis le parent pour pouvoir écouter cet event dans l'application 
     } 



    ]]> 
</mx:Script> 

<s:BorderContainer 
        id="bcImage" 
        width="120" 
        height="99%" 
        borderVisible="true" 
        borderColor="#FFFFFF" 
        borderWeight="1" 
        cornerRadius="6" 
        backgroundAlpha=".4" 
        backgroundColor="#5f5f5f" 
        > 




    <mx:Canvas id="cvsImage" width="100%"> 
     <mx:SWFLoader id="rotationArrow" source="{rotationArrowClass}" height="18" width="18" x="3" y="3" visible="true" click="rotationImage(event);" alpha=".5"/> 
     <s:Label x="23" y="3" width="82" fontSize="11" fontWeight="normal" text="{data.imDate}" 
       textAlign="right" color="#000000"/>  


     <mx:Image id="iconCanvas" x="10" y="20" width="99" height="99" horizontalAlign="center" 
        maintainAspectRatio="true" scaleContent="true" 
        source="{data.imURL}" 
        verticalAlign="middle" mouseDown="iconCanvas_mouseDownHandler(event)" 
        > 

     </mx:Image> 
    </mx:Canvas> 

    <s:VGroup width="100%" y="124" height="25" bottom="1" left="3" right="3" paddingBottom="0" paddingTop="4" gap="0"> 
     <s:Label text="{data.imType}" height="50%" fontSize="10" paddingBottom="1" 
       fontWeight="normal" width="99%" textAlign="center" color="#000000"/> 
     <s:Label text="{data.imStade}" fontSize="10" textAlign="center" paddingTop="1" 
       fontWeight="normal" width="99%" color="#000000"/> 

    </s:VGroup> 

</s:BorderContainer> 

このオプションは、(allowMultipleSelection)trueの場合、仕事にドラッグ停止、理由を知っていますか?

ありがとうございます。

答えて

0

allowMultipleSelection = "true"を追加すると、私にとってうまくいきました。私はMacの最新バージョンのFlash Playerで動作しています。最初はちょっと薄れていたようでしたが、ページをリフレッシュした後にうまくいきました。私が自分のプロジェクトで持っていなかったのは、データプロバイダとアイテムレンダラーだけでした。あなたがそこに夢中になっていない限り、アイテムレンダラーが問題を引き起こすとは本当に疑問です。あなたは最新のFlash Playerを持っているかどうかを確認してください。

+0

私はMacで作業しています。私は最新バージョンのFlash Playerを持っています。ありがとう – Flex60460

+0

私はちょうど上記のアップデートからあなたのアイテムレンダラーを引っ張りました、そして、それはまだマルチセレクトを使ってうまく動作します。私が変更したのは、// [Bindable] // [Embed(source)/imagerie/rotate.png ")]です。あなたのAIRバージョンを確認してください(今は、これがAIRアプリケーションであることに気づきました...)。 – Dom

+0

ありがとうございました – Flex60460

関連する問題