Функции ItemRenderer и ActionScript Flex - PullRequest
0 голосов
/ 22 июня 2011

Хорошо, возможно, моя последняя проблема с флексом:)

Получил ItemRenderer

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx" verticalCenter="0" horizontalCenter="0" autoDrawBackground="false">


akwrenderer.mxml
    <s:Image source="{data.imgPath}"    verticalCenter="{data.y}" horizontalCenter="{data.x}"
             visible="{data.isShown}" scaleX="{negate}" scaleY="{negate}" click="selectAkw(event)" />
    <s:Ellipse  visible="{data.isShown}" height="{data.radiusDisp.height}" width="{data.radiusDisp.width}" 
                verticalCenter="{data.radiusDisp.y}" horizontalCenter="{data.radiusDisp.x}"
                alpha="0.5"   rotation="{data.radiusDisp.rotation}" bottom="0"
                transformY="{data.radiusDisp.transY}" >
        <s:fill>
            <s:RadialGradient>
                <s:entries>

<s:GradientEntry color="#006699" ratio="0.3" alpha="0.5"/>
                    <s:GradientEntry color="#006699" ratio="0.3" alpha="0.55"/>
                    <s:GradientEntry color="#006699" ratio="0.3" alpha="0.555"/>
                </s:entries>
            </s:RadialGradient>
        </s:fill>
    </s:Ellipse> 
</s:ItemRenderer> 

, но у меня нет доступа к negate и selectAkw () которые находятся в script / control.as

у кого-нибудь есть подсказка?

1 Ответ

1 голос
/ 22 июня 2011

Есть несколько способов сделать это.На мой взгляд, лучший способ - передать параметры в средство визуализации элементов с помощью фабрики классов.

Так что добавьте свойства к itemRenderer

[Bindable]
private var negate:int = 0;

Теперь в компоненте, вызывающем его (сделайте это в CreationComplete, я думаю)

var irFactory:ClassFactory = new ClassFactory(YourItemRenderer);
irFactory.properties = {negate:negate};
yourComponent.itemRenderer = irFactory;

Вы также можете сделать этоas ItemRendererFunction

Обманщик, способ сделать это - {FlexGlobals.topLevelApplication.negate} при условии, что отрицание доступно в вашем основном файле приложения MXML.

Для вашего события просто отправьте новое событие по щелчку и захватите его там, где находится компонент, а затем вызовите оттуда вашу функцию SelectAKW().

click="{dispatchEvent(new Event("selectThatAKW"))}"

, затем на родительском компоненте вcreationComplete:

 yourComponent.addEventListener("selectThatAKW",selectAkw)
...