InlineGraphicElement的鼠标事件

今天没事依然逛逛国内外Flex方面的主要坛子,这几天关注InlineGraphicElement的鼠标事件多了起来,由于前段时间自已研究tlf比较多,其中也涉及到InlineGraphicElement的鼠标事件;虽然有两种方法可以获取执行,其实个人觉得用getEventMirror()更好些,原因很简单,因为最终是要到TextFlowLine;
第一种方法:
利用ILG嵌入的graphic的parent,Sprite交互:

var sprite:Sprite=InlineGraphicElement.graphic.parent as Sprite;
sprite.addEventListener(MouseEvent.CLICK, downHandler);


第二种方法:
利用ILG的getEventMirror()交互:

myEventDispatcher:EventDispatcher=image.getEventMirror();
myEventDispatcher.addEventListener(MouseEvent.CLICK, imageClickHandlers)


下面是利用getEventMirror(),来获取当前操作的ILG:

原理:
根据官方的tlf图例:
[img]/upload/attachment/90487/afc248ed-54c7-3f46-ae59-abbdf121fd2c.png[/img]

由于图片可以随意插入,所以在ParagraphElement中,可以有N多ILG,也可能会有其它Element,这时可以先遍历ParagraphElement,抽出ILG,然后对比当前交互的Loader的name就可以得知你Click的ILG了.

private function graphicStatusChangeEvent(evt:StatusChangeEvent):void
{
var image:InlineGraphicElement=evt.element as InlineGraphicElement;
var myEventDispatcher:EventDispatcher=image.getEventMirror();
myEventDispatcher.addEventListener(MouseEvent.CLICK, imageClickHandlers)

}
private function imageClickHandlers(event:MouseEvent):void
{
var currentLoader:Loader=event.target as Loader
var bakLoaderName:String=currentLoader.name

var textLine:TextLine=event.currentTarget as TextLine;
var textFlowLine:TextFlowLine=textLine.userData as TextFlowLine;
var paraElement:ParagraphElement=textFlowLine.paragraph as ParagraphElement;
trace(paraElement.numChildren)
for(var k:int=0;k<paraElement.numChildren;k++){
//获取此行的elements
var childElement:*=paraElement.getChildAtIndex(k);
//抽出InlineGraphicElement;
if(childElement is InlineGraphicElement){
var currentILG:InlineGraphicElement=childElement as InlineGraphicElement;
var c_loader:Loader=currentILG.graphic as Loader;
trace("全部的name=="+c_loader.name)
if(c_loader.name==bakLoaderName){
trace(currentLoader.name);
//执行当前图像点击命令, 自由变形和移动
CMDManageImageClick(currentILG)
break;
}
}
}
}

只要能获取到当前的InlineGraphicElement,余下的就是接口操作图像的大小自由调整和移动等等,甚至是截取与色彩变化等等;
PS:
这里附上一张Element继承图例:
[img]/upload/attachment/90489/a30ab8ce-0e7f-3aa9-85bd-c4e4eb544c92.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值