Flash ، ActionScript 3: استخدام خصائص Get/Set للحصول على القيم من الفئات الأخرى ، يخلق الكثير من التعليمات البرمجية المكررة هل يمكن أن تختلف؟ `` `` `` ``

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

سؤال

أنا أستخدم 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/

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