فليكس: كيف لتغيير وتحريك عنصر في وقت التشغيل؟

StackOverflow https://stackoverflow.com/questions/609456

  •  03-07-2019
  •  | 
  •  

سؤال

يرجى، أي شخص يمكن أن توجه لي كيف نفعل هذه الاشياء.

ولدي بانيل ومربع، وبانيل هو بلدي بانيل العنصر (داخل بانيل العنصر هو على سبيل المثال. الصورة، ناحية النص، الفيديو) و المربع هو مربع هدفي لبلدي خلق عنصر. يمكن للمستخدم تحديد العنصر هو / هي تريد إنشاء (خلق دينامية) واسحبه إلى استهداف مربع (سحب وإسقاط الحدث). ثم بعد إنشاء العنصر يمكن للمستخدم سحب المكون أنه / أنها خلقت وفي أي مكان على الهدف مربع، وكذلك يمكن للمستخدم تغيير حجم المكون أنه / أنها خلقت (وقت تغيير حجم).

ولدي هذا الرمز لسحب وإسقاط ويبدو هذا الرمز يعمل فقط على صورة

//-----action script-----//
        private function dragIt(event:MouseEvent, value: String, objParent: String, objName: String):void 
        {           
            var dragInitiator:Image = event.currentTarget as Image;    
            var dragSource:DragSource = new DragSource();

            dragSource.addData(value,'value');
            dragSource.addData(objParent, 'parent');
            dragSource.addData(objName, 'objname'); 

            var dragProxy:Image = new Image();
            dragProxy.source = event.currentTarget.source;


            DragManager.doDrag(dragInitiator, dragSource, event, dragProxy);
        }


        private function dragEnterHandler(event:DragEvent):void 
        {
            var dropTarget:Box=event.currentTarget as Box;
            dropTarget.setStyle("borderThickness", 5);
            DragManager.acceptDragDrop(dropTarget);
        }

        private function dragExitHandler(event:DragEvent):void
        {
            var dropTarget:Box=event.currentTarget as Box;                
            revertBoxBorder();                
        }     

        private function revertBoxBorder():void
        {
            targetBox.setStyle("borderThickness", 1);                
        }

        private function dragDropHandler(event:DragEvent):void 
        {
            var value:String = event.dragSource.dataForFormat('value') as String;
            var objParent:String = event.dragSource.dataForFormat('parent') as String;
            if(value == "mp3")
            {
             //do something     
            }
            else if (value == "image")
            {
                if (objParent == "panel")
                {
                    var imgView: Image = new Image;                 
                    imgView.x = event.stageX;
                    imgView.y = event.stageY;

                    addChild(imgView);
                    imgView.name = String(getChildByName(imgView.name).parent.numChildren-1);     
                    imgView.addEventListener(MouseEvent.MOUSE_MOVE,  function(e:MouseEvent):void 
                    {
                    dragIt(e, value, 'box', Image(e.target).name);
                });
                    imgView.source = ImgInsert;
                }
                else
                {
                    var objName:String = event.dragSource.dataForFormat('objname') as String;
                    getChildByName(objName).parent.getChildAt(int(objName)).x = event.stageX;
                    getChildByName(objName).parent.getChildAt(int(objName)).y = event.stageY;
                }

            }
            else if (value == "textarea")
            {
                //do something                  
            }

        }

//-----mxml code------//
<mx:Panel x="0" y="37" width="91" height="417" layout="absolute" title="Component" borderColor="#8DA5AB" color="#345860" borderStyle="outset">
    <mx:Image x="7" y="43" width="21" height="18" source="{TxtAreaInsert}" mouseMove="dragIt(event,'textarea','panel','')"/>
    <mx:Image x="36" y="43" width="21" height="18" source="{ImgInsert}" mouseMove="dragIt(event,'image','panel','')"/>
    <mx:Image x="36" y="80" width="21" height="18" source="{Mp3Insert}" mouseMove="dragIt(event,'mp3','panel','')"/>
    <mx:Image x="7" y="80" width="21" height="18" source="{VdoInsert}" mouseMove="dragIt(event,'video','panel','')"/>
</mx:Panel>
<mx:Box id="targetBox" y="37" width="589" height="417" borderColor="#8CC2E8" backgroundColor="#D5DBEE"
    dragExit="dragExitHandler(event)" dragEnter="dragEnterHandler(event)" dragDrop="dragDropHandler(event)" left="99">
</mx:Box>;

وكيفية نقل عنصر وبالتالي غير صورة مثل TxtArea؟ كيفية تغيير حجم عنصر داخل مربع الهدف؟ (وهذا هو مثل واجهة المستخدم الرسومية من العطف عند إنشاء عنصر) شكرا لكم ..

هل كانت مفيدة؟

المحلول

Rogue-Development.com لكائن مقابض لقد استعملت هذا مع نجاح جيدة لنقل / تغيير حجم المكونات.

نصائح أخرى

ومحاولة أيضا من Pantaste مكتبة وهو الكثير أكثر تطورا من مقابض الكائن.

http://sourceforge.net/projects/tcycomponents/
وحمل حزمة والعرض إذا كنت تريد.

وعنصر استخدام TcyReziser لسهولة الحركة / تغيير حجم مثل دلفي 2009 لا!

والتحيات، موريسيو

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top