Я новичок во Flex и портирую чистое приложение Flash / AS3 на Flex 4.5
Я создал собственный компонент MXML на основе BorderContainer
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="160" height="140" >
<s:Image id="_avatar" enableLoadingState="true"
x="0" y="0" width="160" height="120" />
<s:Label id="_username" x="0" y="125"
fontSize="12" fontWeight="bold" />
</s:BorderContainer>
Я пытаюсь добавить эффект выделения / увеличения на mouseOver
и эффект «нажатие» на mouseDown к этому компоненту:
<fx:Script>
<![CDATA[
import flash.filters.*;
public static const SHADOW:Array = [ new DropShadowFilter(8,
80, 0x000000, 0.2, 32, 32, 1, 1, false, false, false) ];
public static const GLOW:Array = [ new GlowFilter(0xFFFF00,
0.5, 36, 36, 1, 1, false, false) ];
private var _oldScale:Number;
private function mouseOver(event:MouseEvent):void {
_oldScale = scaleX;
filters = GLOW;
}
private function mouseDown(event:MouseEvent):void {
_oldScale = scaleX;
scaleX *= 0.95;
scaleY *= 0.95;
filters = null;
}
private function mouseUp(event:MouseEvent):void {
scaleX = scaleY = _oldScale;
filters = GLOW;
}
private function mouseOut(event:MouseEvent):void {
scaleX = scaleY = _oldScale;
filters = SHADOW;
}
К сожалению, эти методы не вызываются ввсе.
В чистом приложении Flash / AS3 я бы назвал
addEventListener(MouseEvent.MOUSE_OVER, handleMouseOver);
addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown);
addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
addEventListener(MouseEvent.MOUSE_OUT, handleMouseOut);
addEventListener(MouseEvent.CLICK, handleMouseClick);
, и это сработало бы хорошо, но здесь, во Flex 4.5, я не знаю, как это сделать.
Также я заметил, что есть атрибут dropShadowVisible = "true" , но не уверен, можно ли его использовать для моих целей.
не уверен, разрешено ли увеличение / уменьшение пользовательского компонента в flex, или мне, вероятно, следует использовать «Flex Effects» (но как?), а также установить disableLayout = "true" ?