سؤال

لدي قم بسحب وإسقاط معالج في سلك معزول التطبيق.السحب الوكيل أو "الأشباح" صورة ليتم عرضها أثناء سحب, يجب تحميلها قبل السحب ، وهذا يستغرق بعض الوقت.كيف يمكنني تحميل مباشرة أو التحميل المسبق?حل واحد هو تكرار الصورة ، ولكن بقدر ما أعرف, صورة الأشياء لا يمكن أن تتكرر دون خلق متغير آخر ، والتي يجب أن لا تزال تأخذ بعض الوقت لتحميل.

ولعل هذا الكود سوف توضح بشكل أفضل:

public function DragApp (e : MouseEvent) : void {
    var dragInitiator : Image = e.currentTarget as Image;
    var dragSource : DragSource = new DragSource ();

    var dragProxy : Image = new Image ();
    dragProxy.source = e.currentTarget.source; // Won't work unless image is embedded
    dragProxy.load (e.currentTarget.source); // Must load

    setTimeout (DragManager.doDrag, 350, dragInitiator, dragSource, e, dragProxy);
}
هل كانت مفيدة؟

المحلول

أعتقد أن المشكلة هي أنك لا تحديد العرض والارتفاع للصورة (بطريقة زائدة عن الصور المضمنة):

dragImage:IFlexDisplayObject (افتراضي = null) — صورة السحب.هذه الحجة هو اختياري.إذا تم حذف معيار اسحب المستطيل يستخدم خلال السحب والإفلات.إذا قمت بتحديد صورة ، يجب أن بشكل صريح تعيين الطول والعرض للصورة وإلا فإنه لن تظهر.

إذا كنت تحديد عرض وارتفاع الصورة الوكيل في المثال الخاص بك ، سوف تعمل على الأرجح:

var dragProxy : Image = new Image ();
dragProxy.source = dragInitiator.source;
dragProxy.width = dragInitiator.width;
dragProxy.height = dragInitiator.height;

نصائح أخرى

وكنت أفضل حالا باستخدام التقاط الصورة النقطية للصورة واستخدام ذلك كما dragProxy الخاص بك. وإليك بعض قواعد بسيطة لالتقاط BitmpData من أي UIComponent:

private function getUIComponentBitmapData( target : UIComponent ) : BitmapData
{ 
    var bd : BitmapData = new BitmapData( target.width, target.height );
    var m : Matrix = new Matrix();
    bd.draw( target, m );
    return bd;  
}

وبمجرد الانتهاء من ذلك، يمكنك إنشاء نقطية جديدة باستخدام BitmapData وتوريد نقطية كمصدر للعنصر صورة. مزيد من التفاصيل / الأمثلة في هذا بلوق وظيفة:

http://www.cynergysystems.com/blogs/page/andrewtrice ؟ دخول = flex_2_bitmapdata_tricks_and

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