Просмотр полной версии : A=B навечно
robin_bobin2001
30.07.2007, 20:12
есть переменная А = 1
есть переменная Б = 0
как присвоить значение А переменной Б, чтобы при изменении переменной А переменная Б тоже получала изменение?
может немного непонятно. Но очень интересно, возможно ли это средствами флэш?
Или такой вариант: есть переменная А и нет переменной Б.
Если извратиться, что прикрутить data binding…
CrazyFlasher
30.07.2007, 23:49
зачем это?!
Если извратиться, что прикрутить data binding…
Это ж не флекс.
Это ж не флекс.
А кто сказал, что во Flash этого нет?
А кто сказал, что во Flash этого нет?
Хм.есть... Но bindable-data используется при работе с компонентами, а здесь речи о компонентах не шло...
А что, это нельзя без компонентов использовать?
А что, это нельзя без компонентов использовать?
Data binding lets you map the properties of one component to another component. A binding is simply a statement that says "When property X of component A changes, copy the new value to property Y of component B."
Если есть такая возможность, то приведи пример использования без компонентов.
Если есть такая возможность, то приведи пример использования без компонентов.
Да не вопрос ваще:
import mx.data.binding.Binding;
a = 0;
b = 10;
binding = new Binding({component:this,property:'a'}, {component:this,property:'b'});
onMouseDown = function() {
a = Math.random();
binding.execute();
trace('a = '+a+', b = '+b);
}
Ага? :bye:
Ага? :bye:
Ага:bye: Спасибо. Буду знать на будущее :bye:
Это реально мега изврат )))
Untitled-1.swf Movie Report
----------------------------
Frame # Frame Bytes Total Bytes Scene
------- ----------- ----------- ----------------
1 15724 15724 Scene 1 (AS 2.0 Classes Export Frame)
15 КБ не так уж и много в нынешнее время.
__etc, конечно это немного, и грузится только однажды.. И спасибо за пример - я никогда bindable не юзал, а теперь въехал что это.
А продолжая изращаться:
__c= { a:[null, 'b'], b:[null, 'a'] };
function handMadeBinder(p,o,n){
if( n != __c[p][0] ){
__c[__c[p][1]][0] = n;
this[__c[p][1]] = n;
}
return n;
}
watch('a', handMadeBinder );
watch('b', handMadeBinder );
a = 9;
trace( a + ' ' + b );
setTimeout( function(){ a = 10; }, 10);
setTimeout( function(){ trace( a + ' ' + b ); }, 15);
setTimeout( function(){ b = 11; }, 25);
setTimeout( function(){ trace( a + ' ' + b ); }, 30);
-----------------
Total Bytes 280
Да это понятно, что можно сотворить. Можно и addProperty прикрутить.
Я же сразу сказал, что флешовый биндинг прикручивать, только если совсем делать нечего. К тому же, требуется вызов execute. В компонентах этого не видно, там этот биндинг вживлен по самое некуда.
В данном случаи это совсем не нужно. Либо отказаться от использования второй переменной (какой в ней смысл, когда она всегда равна первой), либо использовать get/set
если всё реализовывается на простой основе тогда конечно watch
если имеет место быть обьектам, то используйте set get...
private var _a:Number = 0;
private var _b:Number = 0;
public function set _a(numValue:Number)
{
_a = numValueж
_b = numValue;
}
КРОТ получает плюс за очередное игнорирование тегов для кода.
з.Ы. Код неправильный. И никто не говорил, что это все в классе должно быть.
И никто не говорил, что это все в классе должно быть.
потому я и пишу, если если если.
а код всегда можно поправить)
и не судите строго за игнор тэгов, не привык еще
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.