Показать сообщение отдельно
Старый 04.08.2011, 01:43
preyko вне форума Посмотреть профиль Отправить личное сообщение для preyko Найти все сообщения от preyko
  № 9  
Ответить с цитированием
preyko

Регистрация: May 2011
Сообщений: 7
И вправду. Нельзя передать ссылку на сет метод. Дело то все в том, что аргументом функции change() должен быть экземпляр класса Point, и передавая туда некое свойство, которое по сути set/get метод, мы создаем новый экземпляр, который попадает в функцию вместо ссылки на этот самый метод.
Это демонстрирует следующий пример:
Код AS3:
function change( target:Star )
{
	trace( "f", target.p );
	target.p = new Point( 200, 100 );
	trace( "f", target.p );
}
function change1( target:Point )
{
	trace( "f", target );
	target = new Point( 300, 100 );
	trace( "f", target );
}
 
var s:Star = new Star( 100, 100 );
trace( s.p );
change( s );
trace( s.p );
 
trace();
 
trace( s.p );
change1( s.p );
trace( s.p );
Здесь класс Star просто содержит в себе закрытое свойство Pos, а set/get метод p оперирует ими.