![]() |
|
||||||||||
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
|
|
|||||
|
[+4 06.05.14]
|
Цитата:
const megaRandomDO:MDO = new MDO ( randomVar ) private function get randomVar():int { return ... } Хотя это про геттер... а сеттер тоже хз где
__________________
Марк Tween |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
я не про _ , а вообще, так сказать в целом )
я сеттеры обычно использую только если нужно произвести какие-то проверки внутри кода сеттера. В других случаях заменяю из публичными переменными. ну а приватный сеттер - это что-то бессмысленное, имхо |
|
|||||
|
Цитата:
__________________
http://www.chessmax.ru |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
|
|
|||||
|
.
|
Приватный сеттер использовал пару раз. Необходимо было диспатчить событие изменение модели при изменении некоторого параметра, который изменялся из нескольких мест. Но наружу он не был виден (по событию читалось другое свойство)
private function set param(value:Boolean):void { if ( this._param === value ) return; this._param = value; super.dispatchEvent( new Event(Event.CHANGE) ); } function methodOne():void { if (что-то) this.param = false; } function methodTwo():void { if (что-то) this.param = true; } function methodFour():void { if (что-то) this.param = false; } |
|
|||||
|
Цитата:
Или вот как еще можно: При смене значения элемента одного массива он диспатчит событие о изменении значения элемента, это событие отлавливается и во 2м массиве меняется значение элемента с таким же индексом package com.CustomArray { import com.CustomArray.events.CustomArrayEvent; import flash.events.Event; import flash.events.EventDispatcher; import flash.events.IEventDispatcher; dynamic public class CustomArray extends Array implements IEventDispatcher { private var dispatcher:EventDispatcher; public function CustomArray() { dispatcher = new EventDispatcher(this); } public function add(val:*):void { this.push(val); dispatchEvent(new CustomArrayEvent(CustomArrayEvent.COLLECTION_CHANGE)); } public function update(val:*,index:int):void { this[index]=val; dispatchEvent(new CustomArrayEvent(CustomArrayEvent.COLLECTION_VALUE_CHANGE,{ind:index,value:val})); } /* iEventDispatcher Implementation */ public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void { dispatcher.addEventListener(type, listener, useCapture, priority); } public function dispatchEvent(evt:Event):Boolean { return dispatcher.dispatchEvent(evt); } public function hasEventListener(type:String):Boolean { return dispatcher.hasEventListener(type); } public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void { dispatcher.removeEventListener(type, listener, useCapture); } public function willTrigger(type:String):Boolean { return dispatcher.willTrigger(type); } } } package com.CustomArray.events { import flash.events.Event; public class CustomArrayEvent extends Event { public var messageData:Object; public static const COLLECTION_CHANGE:String="collectionChange"; public static const COLLECTION_VALUE_CHANGE:String="collectionValueChange"; public function CustomArrayEvent(type:String, data:Object=null, bubbles:Boolean=false, cancelable:Boolean=false) { super(type, bubbles, cancelable); var messObj:Object=new Object(); messObj.data=data; this.messageData=messObj; } } } package { import com.CustomArray.CustomArray; import com.CustomArray.events.CustomArrayEvent; import flash.display.Sprite; public class ArrayProxyTest extends Sprite { protected var _array1:CustomArray=new CustomArray(); protected var _array2:CustomArray=new CustomArray(); public function ArrayProxyTest() { _array1.addEventListener(CustomArrayEvent.COLLECTION_VALUE_CHANGE,sourceArrayCollectionValueChangeHandler); _array1.addEventListener(CustomArrayEvent.COLLECTION_CHANGE,sourceArrayCollectionChangeHandler); _array1.add(1); _array1.add(2); _array1.add(3); _array1.update(45,2); } protected function sourceArrayCollectionChangeHandler(event:CustomArrayEvent):void { _array2=_array1; trace("\nCollectionChange\nARRAY 1: "+_array1); trace("ARRAY 2: "+_array2); } protected function sourceArrayCollectionValueChangeHandler(event:CustomArrayEvent):void { _array2[event.messageData.index]=event.messageData.value; // смена значения элемента во 2м массиве trace("\nCollectionValueChange\nARRAY 1: "+_array1); trace("ARRAY 2: "+_array2); } } } Последний раз редактировалось djyamato; 20.12.2011 в 22:43. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
ArrayList, ArrayCollection - мне кажется вам нужно что-то из этой области.
Если я правильно конечно понял. Т.е. при изменении.удалении.добавлении не самого массива, а какого нибудь элемента массива - нужно получить событие.
__________________
Отряд Котовскага |
|
|||||
|
Да, сейчас оно уже смысла не имеет. Но, когда я создавал тему, я почему-то себе вбил в голову, что при изменении элемента приватного массива, можно изменить одновременно элемент под таким же индексом в другом приватном массиве.
__________________
Я мало чего умею, но зато хорошо умею учиться... |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|