PDA

Просмотр полной версии : drag&Drop в рамках скрола


Agent007
17.12.2008, 13:41
Подскажите пожалуйста как можно реализовать.
Есть компонент HBox, внутрь него грузиться картинка, также есть зум этой картинки и при увеличении ее в HBox появляеться скролл я пытаюсь сделать drag&Drop внутри HBox. Натолкните хотябы на мысль)))
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" >

<mx:Script>
<![CDATA[

import flash.events.MouseEvent;

private var imageWidth:Number=0;
private var imageHeight:Number=0;

private function stopDr(event:MouseEvent):void
{
p_Image.stopDrag();
}

private function startDr(event:MouseEvent):void
{
if (p_Image.width>box.width){
p_Image.startDrag();
}

}

private function DrDr(d:Event):void
{
p_Image.addEventListener(MouseEvent.MOUSE_DOWN, startDr);
p_Image.addEventListener(MouseEvent.MOUSE_UP, stopDr);
}

private function ImZoom():void
{
p_Image.width=uint(imageWidth*hSlider.value/100);
p_Image.height=uint(imageHeight*hSlider.value/100);
}
]]>
</mx:Script>

<mx:Panel id="p_panel" height="417" width="430"
paddingTop="10" paddingBottom="10" paddingLeft="10" paddingRight="10">

<mx:HBox height="301" width="375" id="box">
<mx:Image id="p_Image" source ="@Embed('PK_icon_.png')" initialize="DrDr(event)"
creationComplete="imageWidth=p_Image.width; imageHeight=p_Image.height;" />
</mx:HBox>

<mx:HSlider id="hSlider" minimum="0" maximum="400" value="100"
dataTipPlacement="top"
tickColor="black"
snapInterval="1" tickInterval="10"
labels="['0%','400%']"
allowTrackClick="true"
liveDragging="true"
change="ImZoom();" width="376"/>
</mx:Panel>
</mx:Application>

FlexOkeks
17.12.2008, 15:47
http://livedocs.adobe.com/flex/3/html/help.html?content=dragdrop_7.html

Agent007
17.12.2008, 16:02
спасибо за ссылку, я видел этот пример, я наверно немного неправильно выразился, нужно сделать аналог scrollDrag компонента ScrollPane, и никак не пойму как ограничить область драга в рамках скрола

FlexOkeks
17.12.2008, 16:30
Может DragScrollingCanvas (http://flexlib.googlecode.com/svn/trunk/examples/DragCanvas/DragCanvas_Sample.swf) из flexlib (http://code.google.com/p/flexlib/) подойдет?

Agent007
18.12.2008, 12:57
FlexOkeks, огромное спасибо это именно то что нужно. Все получилось))