PDA

Просмотр полной версии : не вызывается функция в теге <mx:SetProperty>


Дудник
27.08.2007, 16:11
Есть у меня вот такой state:

<mx:State name="zoom" basedOn="load">
<mx:SetProperty target="{bord}" name="x" value="{calcBordX()}"/>
<mx:SetProperty target="{bord}" name="y" value="{calcBordY()}"/>
<mx:SetEventHandler name="rollOver" handler="null"/>
<mx:SetEventHandler name="rollOut" handler="currentState = ''"/>
</mx:State>


И вот такие две функции:

public function calcBordX():Number {
var res:Number;
if (preview.contentWidth) res = -(preview.contentWidth-75)/2 else res = 0;
trace("preview.contentWidth: " + preview.contentWidth);
return res;
}

public function calcBordY():Number {
var res:Number;
if (preview.contentHeight) res = -(preview.contentHeight-75)/2 else res = 0;
trace("preview.contentHeight: " + preview.contentHeight);
return res;
}


Судя по трейсам вызов функции в value="{calcBordX()}" и в value="{calcBordY()}" не происходит.
В чем дело и как добиться динамического изменения свойства в том или ином стейте?

miramax
27.08.2007, 16:53
Опять у новичков проблемы с разделением императивщины и декларативщины =)
Вместо кложуров , заюзай Bindable свойства:
<mx:SetProperty target="{bord}" name="x" value="{bindSource}"/>

[Bindable]
public function set bindSource(val:Number):void{....}
public function get bindSource():Number{....}

etc
27.08.2007, 17:21
Дудник, отредактируйте свой пост и оформите код тегами .

Дудник
28.08.2007, 06:02
Где про это разделение почитать поподробнее?