Как я могу “не принять” перетаскивание в Flex?

Подчеркивание _ считается переменной «I do not Care» или «Throwaway» в Python

  • Интерпретатор python сохраняет последнее значение выражения специальной переменной с именем _ ,
    >>> 10 
    10
    
    >>> _ 
    10
    
    >>> _ * 3 
    30
    
  • Подчеркивание _ также используется для игнорирования конкретных значений. Если вам не нужны конкретные значения или значения не используются, просто назначьте значения для подчеркивания. Игнорировать значение при распаковке
    x, _, y = (1, 2, 3)
    
    >>> x
    1
    
    >>> y 
    3
    
    Игнорировать индекс
    for _ in range(10):     
        do_something()
    
5
задан Community 23 May 2017 в 12:15
поделиться

4 ответа

Да, перетаскивание отличается в AIR. Я НЕНАВИЖУ это! Требуется большое проигрывание вокруг, чтобы выяснить, как получить вещи работать то же пользовательским dnd, который был создан в гибком проводе.

Что касается координат, возможно, играйте вокруг с localToContent и localToGlobal методами. Они могут помочь в переводе координат к чему-то полезному.

Удачи. Я сообщу, думаю ли я о чем-либо еще.

0
ответ дан 14 December 2019 в 04:52
поделиться

Вы используете только dragEnter метод? При попытке отклонить перетаскивание при тихом перетаскивании по тому же компоненту, необходимо использовать и dragEnter и dragOver методы.

Проверьте этот пример:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.core.DragSource;
            import mx.managers.DragManager;
            import mx.events.DragEvent;

            private function onDragEnter(e:DragEvent):void {
                if ( e.target == lbl ) {

                    if ( e.localX < lbl.width/2 ) {
                        trace("accept");
                        DragManager.acceptDragDrop(this);
                    }
                    else {
                        DragManager.acceptDragDrop(null);
                    }
                }
            }

            private function doStartDrag(e:MouseEvent):void {
                if ( e.buttonDown ) {
                    var ds:DragSource = new DragSource();
                    ds.addData("test", "text");

                    DragManager.doDrag(btn, ds, e);
                }
            }
        ]]>
    </mx:Script>
    <mx:Label id="lbl" text="hello world!" left="10" top="10" dragEnter="onDragEnter(event)" dragOver="onDragEnter(event)" />
    <mx:Button id="btn" x="47" y="255" label="Button" mouseMove="doStartDrag(event)"/>
</mx:Application>
6
ответ дан 14 December 2019 в 04:52
поделиться

Если Вам не нужно собственное перетаскивание в AIR, можно получить поведение перетаскивания Flex путем разделения на подклассы WindowedApplication и установки DragManager. См. это сообщение на Adobe Jira для большего количества информации: https://bugs.adobe.com/jira/browse/SDK-13983

1
ответ дан 14 December 2019 в 04:52
поделиться

хорошо, я вижу проблему теперь. Вместо того, чтобы аннулировать, попытайтесь установить его на dragInitiator.

Проверьте это.

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.DragEvent;
            import mx.managers.DragManager;
            import mx.core.DragSource;

            private function doStartDrag(e:MouseEvent):void {
                if ( e.buttonDown && !DragManager.isDragging ) {
                var ds:DragSource = new DragSource();
                ds.addData("test", "test");

                DragManager.doDrag(btn, ds, e);
                }
            }

            private function handleDragOver(e:DragEvent):void {
                if ( e.localX < cvs.width/2 ) {
                    //since null does nothing, lets just set to accept the drag
                    //operation, but accept it to the dragInitiator
                    DragManager.acceptDragDrop(e.dragInitiator);
                }   
                else {
                    //accept drag
                    DragManager.acceptDragDrop(cvs);
                    DragManager.showFeedback( DragManager.COPY );
                }
            }

            private function handleDragDrop(e:DragEvent):void {
                if ( e.dragSource.hasFormat("test") ) {
                    Alert.show("Got a drag drop!");
                }
            }
        ]]>
    </mx:Script>
    <mx:Canvas x="265" y="66" width="321" height="245" backgroundColor="#FF0000" id="cvs" dragOver="handleDragOver(event)" dragDrop="handleDragDrop(event)">
    </mx:Canvas>
    <mx:Button id="btn" x="82" y="140" label="Drag Me" mouseDown="doStartDrag(event)"/>
</mx:WindowedApplication>
0
ответ дан 14 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: