سؤال

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

ولدي windowSWF بسيطة وأنا باستخدام MMExecute وfl.runScript لتمرير المتغيرات من AS3 إلى jsfl. لم أكن أتصور أود أن واجهت مشاكل إذا كنت تستخدم أدوات بالرغم من ذلك.

في بلدي windowSWF لقد DataGrid قابلة يسمى <م> settingsGrid مع الأعمدة التالية: [ "بادئة"، "لاحقة"، "نوع"] وأنا ترينغ لتمرير <م> settingsGrid.dataProvider.toArray () إلى النصي jsfl.

والمشكلة هي أنه يخرج كما غير معروف على الجانب الآخر. أي تلميحات حول كيف يمكن الالتفاف حول ذلك؟

والنص القصير: كيف يمكنني تمرير مجموعة من الأشياء مثل {بادئة: "قيمة"، لاحقة: "قيمة"، اكتب: "قيمة"} من أكشن لjsfl. تمرير الكائنات وحيدة يعمل، أحصل على خطأ عندما أمرر صفيف:

"Syntax Error: missing ] after element list"

واستدعاء دالة بلادي يشبه هذا:

MMExecute('fl.runScript(fl.configURI + "Commands/LazyGen.jsfl","generate","_",'+ settingsGrid.dataProvider.toArray() +');');

ووالتوقيع للأسلوب في ملف jsfl يبدو مثل هذا:

function generate(prefixArg,settingsArg){}
هل كانت مفيدة؟

المحلول

وأنا تمرير الكائنات من بيانات الشبكة إلى JSFL. الكائنات لديها الخصائص التالية: مفتاح ، <م> استبدال و <م> نوع . هنا هي وظيفة لقد استعملت لبناء سلسلة أنا يمكن أن تمر في JSFL من أكشن:

private function dataProviderToString(dataProvider:DataProvider):String{
            var settingsString:String = '[';
            for(var i:int = 0 ; i < dataProvider.length ; i++){
                if(i < (dataProvider.length-1)) settingsString += '{key:"'+ dataProvider.getItemAt(i).key + '",replacement:"' + dataProvider.getItemAt(i).replacement + '",type:"'+ dataProvider.getItemAt(i).type + '"},';
                else settingsString += '{key:"'+ dataProvider.getItemAt(i).key + '",replacement:"' + dataProvider.getItemAt(i).replacement + '",type:"'+ dataProvider.getItemAt(i).type + '"}';
            }
            settingsString += ']';
            return settingsString;
        }

ولقد لاحظت لم يتم حفظ الإعدادات في SWF سحرية بطريقة أو بأخرى، لذلك كنت SharedObject المحلي لتخزين الإعدادات من dataProvider. أعتقد أنني يمكن أن يكون مجرد كتب ملف باستخدام FLfile، ولكن لم أكن أريد أن تبقي تحويل صفائف إلى سلاسل والظهر. أنا أكتب مجموعة من dataProvider في (dataProvider.toArray ()) لByteArray أنني قرأت للتو الظهر ويشق في في منشئ من DataProvider جديدة عندما كنت في حاجة إليها.

نصائح أخرى

والعمل فقط من قيمة المتغيرات الخاصة بك داخل windowsSWF وتمرير المتغيرات في JSFL بواسطة الأمر MMExecute.

والأمر التالي يحدد لون التعبئة في شريط الأدوات إلى الأسود. هكذا على سبيل المثال يمكن أن أمسك قيمة اللون من مكون لون منقار ثم تمريرها إلى jsfl. كل ما فعله هو سلسلة المتغير من سيناريو العمل في السلسلة التي يتم إرسالها عبر MMExecute.

var myColor:String = "#000000";
MMExecute("var fill = fl.getDocumentDOM().getCustomFill(\"toolbar\");fill.style= \"solid\";fill.color = \'"+myColor+"\';fl.getDocumentDOM().setCustomFill( fill );");
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top