كيف يمكنني تحميل الصور كأيقونات ديناميكيا في مادة تيليلية باستخدام المرن؟
-
22-08-2019 - |
سؤال
حسنا، لذلك لدي تقديم مخصص الذي قمت بإنشائه:
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
horizontalAlign="center"
verticalAlign="middle"
width="100"
height="100">
<mx:Script>
<![CDATA[
[Bindable]
private var fileLabel:String;
[Bindable]
private var fileIcon:Class;
override public function set data(value:Object):void{
fileLabel = value.label;
fileIcon = value.file.url;
}
]]>
</mx:Script>
<mx:Image source="{fileIcon}" />
<mx:Label text="{fileLabel}" />
</mx:VBox>
أنني أريد استخدام معرض للصور مع الصور التي يتم سحبها وإسقاطها على tilelist. لدي هذا الجزء لأسفل، لكنني لا أستطيع أن أحصل على شيء أيقونة للعمل.
نظرا: القيمة هي نوع من المجمع لفئة الملفات. أريد تعيين MX: مصدر الصورة إلى شيء يجب أن يكون من نوع الفصل. باستخدام NativePath أو URL يعطيني خطأ يلقي. أرى أطنان من الأمثلة عبر الإنترنت باستخدام XML وشيء مثل "تضمين (/url/to/img.jpg)". أعدك أنه إذا أعطيتني أحد هذه الأمثلة (باستخدام صورة ثابتة) سأقدم لك تصويت سلبي. هذا ليس ما أبحث عنه هنا!
المحلول
السبب في أن هذا لا يعمل هو لأن نوع fileIcon
الملكية Class
. وبعد سوف ترغب عموما فقط فقط كائن من النوع Class
إذا كنت تخطط لاستخدامها مثل المصنع، فقم بإنشاء مثيلات من هذا الفصل معها. عند استخدام [Embed]
البيانات الوصفية، تشير إلى المحول البرمجي الذي يجب أن تضمين الأصول المحددة في SWF وأيضا إنشاء Class
لتكون بمثابة مصنع لمثيلات كائن البيع التي يمكن أن تمثل هذا الأصل. ومع ذلك، كما كنت قد اكتشفت بالفعل قبل نشر هذا السؤال، المشكلة مع [Embed]
هل تحتاج إلى التعديل المرجع، لا يسمح لك بتوفير قيمة في وقت التشغيل (لأن المحول البرمجي يحتاج إلى تضمين الأصول حرفيا، في وقت الترجمة).
لحسن الحظ، mx:Image.source
هو خاصية مرنة للغاية تقبل أيضا السلاسل (على الرغم من أن معظم الوثائق توضح استخدامها بأصول مضمنة). طالما أن التطبيق المرن قادر على تحميل الأصل، يمكنك فقط تزويد عنوان URL مكتوب بالسلسلة كما source
.
تغيير نوع fileIcon
إلى سلسلة، وتحقق أيضا من ذلك value.file.url
هو في الواقع عنوان URL للصورة التي يمكن أن يحمل تطبيقك. (يمكنك اختبار هذا فقط عن طريق الصغار هذا عنوان URL في mx:Image
'س source
ينسب.)