Flash ، ActionScript 3: استخدام خصائص Get/Set للحصول على القيم من الفئات الأخرى ، يخلق الكثير من التعليمات البرمجية المكررة هل يمكن أن تختلف؟ `` `` `` ``
-
02-10-2019 - |
سؤال
أنا أستخدم Get and Petters في رمز AS3 الخاص بي لتحرير قيم فئة أخرى (لأن هذه المتغيرات مشتركة) لا أحب وضع المرحلة.
انظر أدناه
private function get isScrabble(){return stage.sharedVar.isScrabble;}
private function set isScrabble(val){stage.sharedVar.isScrabble = val;}
private function get superGrid(){return stage.sharedVar.superGrid}
private function set superGrid(val){stage.sharedVar.superGrid = val;}
private function get gridSize(){return stage.sharedVar.gridSize}
private function set gridSize(val){stage.sharedVar.gridSize = val}
private function get blokDefaultWidth(){return stage.sharedVar.blokDefaultWidth}
private function set blokDefaultWidth(val){stage.sharedVar.blokDefaultWidth = val}
private function get blokDefaultHeight(){return stage.sharedVar.blokDefaultHeight}
private function set blokDefaultHeight(val){stage.sharedVar.blokDefaultHeight = val}
كما ترى ، فإنه يحتوي على الكثير من التعليمات البرمجية المكررة في كل مرة "مرحلة الإرجاع. sharedvar". و "stage.sharedvar." + القيمة + "= val" تعود إلى الوراء باستمرار.
كنت أتساءل هل هناك طريقة أخرى لإنشاء هذه المجموعات/المجموعات؟ شيء مثل؟:
private function get variable1(){getValue("hisOwnFunctionName")}
private function set variable1(val){setValue("hisOwnFunctionName")}
وهلم جرا؟؟
شكرا ، ماثي
المحلول
إذا فهمت سؤالك ، فأنت تريد فقط الحصول على خصائص متعددة على كائن. اعتمادًا على وضعك يمكنك تجربته:
private function setProperty(name:Object,value:Object):void {
stage.sharedVar[name]=value;
}
private function getProperty(name:Object):Object {
return stage.sharedVar[name];
}
private function example():void {
setProperty("foo","bar");
trace(getProperty("foo")); //prints: bar
}
ستتيح لك هذه الوظائف تعيين الخصائص التي تريدها والوصول إليها ، ولن تضطر إلى مواصلة تغيير الوظائف. هذا يعني أنه إذا قمت بتغيير Supergrid إلى شيء آخر ، فلا يمكنك فقط تغيير الوظيفة ، فعليك تغيير في كل مكان تستخدمه Get و SetProperty. ولكن هذا يعني أنه ليس عليك الاستمرار في كتابة وظائف جديدة.
أتمنى أن يساعدك هذا.
نصائح أخرى
إذا كنت في Flex Builder ، فقم بتنزيل مجموعة أدوات الويب القياسية من http://download.eclipse.org/release/galileo/ واستخدم "المقتطفات" لكتابة هذه لك.
خلاف ذلك ، إذا كنت بحاجة حقًا إلى القيام بذلك في البرنامج في وقت التشغيل ، فيمكنك إنشاء فصل وكيل Wrapper للقيام بجميع أنواع الأشياء: http://ltslashgt.com/2008/01/24/proxy-class-as3/