首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

相干textarea发出事件后 target currenttarget值 的讨论

2012-10-28 
有关textarea发出事件后 targetcurrenttarget值 的讨论?xml version1.0 encodingutf-8?s:TitleWi

有关textarea发出事件后 target currenttarget值 的讨论
<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow 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="306" height="377" 
   title="新建函数"
   >
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[

import mx.managers.PopUpManager;


private var inputString:String;



private function confirm(e:MouseEvent):void
{

PopUpManager.removePopUp(this);
}

private function changeDisplay():void
{
//if(inputBox.text=="请在下面输入信息:")inputBox.text="";
inputString=inputBox.text;
displayBox.text=inputString;
trace(inputString);
}

private function inputClick(evt:MouseEvent):void
{
trace(evt.currentTarget.id);
trace(evt.currentTarget.name);
trace(evt.target.id);
trace(evt.target.name);

/* if(evt.target)
{
if(inputBox.text.localeCompare("在这里输入信息")==0)
{
    inputBox.text="";
trace("清空");
}
else
trace("不等");
}
else if(evt.target.id=="b7")
{
trace("b7 is selected");
} */
}


]]>
</fx:Script>

<s:VGroup id="mainGroup" width="285"   horizontalAlign="center" top="10" height="324" paddingLeft="10" x="10" paddingRight="10">  <!--主框架-->



<s:BorderContainer  height="80"  width="100%" borderVisible="true">   <!-- 显示-->
<s:RichText id="displayBox"
top="10" width="100%"
>
<s:text>请在下面输入信息</s:text>
</s:RichText>

</s:BorderContainer>

<s:Group width="100%">  <!--输入-->
<s:TextArea id="inputBox"
height="50" width="100%" x="0" fontSize="15"
    change="changeDisplay()"
    click="inputClick(event)"
>
<s:text>在这里输入信息</s:text>
</s:TextArea>

</s:Group>

<s:HGroup width="100%" height="152" paddingTop="10">  <!--控制面板-->
<s:VGroup width="180" height="100%" paddingLeft="0">   <!--输入面板-->

<s:TileGroup requestedColumnCount="5" requestedRowCount="3" width="179" horizontalGap="6" verticalGap="6" fontSize="15" fontWeight="bold" fontFamily="中易黑体"> <!--按钮-->
<s:Button id="b7" width="30" height="30" label="7" click="inputClick(event)"/>
<s:Button width="30" height="30"   id="b8" label="8"/>
<s:Button width="30" height="30"   id="b9" label="9"/>
<s:Button width="20" height="30"   id="bAdd" label="+"/>
<s:Button width="30" height="30"   id="bSqrt" label="^" fontSize="12"/>
<s:Button width="30" height="30"   id="b4"  label="4"/>
<s:Button width="30" height="30"   id="b5" label="5"/>
<s:Button width="30" height="30"   id="b6" label="6"/>
<s:Button width="30" height="30"   id="bSubstract" label="-"/>
<s:Button width="30" height="30"   id="ba" label="("/>
<s:Button width="30" height="30"   id="b1" label="1"/>
<s:Button width="30" height="30"   id="b2" label="2"/>
<s:Button width="30" height="30"   id="b3" label="3"/>
<s:Button width="30" height="30"   id="bb" label="*"/>
<s:Button width="30" height="30"   id="bc" label=")" fontSize="15"/>

</s:TileGroup>


<s:HGroup>

<s:Group width="66" >  <!--“0”--> 
<s:Button width="100%" label="0" x="0" height="30" fontWeight="normal"   fontSize="15"/>
</s:Group>
<s:TileGroup width="106" height="20" fontWeight="bold" fontSize="15"> <!--"点号,除号 退格"-->
<s:Button width="30" height="30"   label="." fontWeight="bold"/>
<s:Button width="30" height="30"   label=""/>
<s:Button width="30" height="30"   label="←" fontSize="10" fontStyle="normal" fontWeight="bold"/>

</s:TileGroup>
</s:HGroup>

</s:VGroup>

<s:VGroup width="77" height="100" paddingLeft="5" paddingRight="0" paddingTop="5" gap="15">      <!--函数面板-->
<s:Button id="numberB" label="数值 ▼" width="65" />
<s:Button label="函数 ▼" width="65"/>
<s:Button label="单位 ▼" width="65"/>
</s:VGroup>

</s:HGroup>
<s:HGroup width="100%" paddingRight="10" verticalAlign="contentJustify" paddingLeft="90" gap="10">
<s:Button label="取消" width="65" click="PopUpManager.removePopUp(this);"/>
<s:Button label="确定" width="65" click="confirm(event)"/>
</s:HGroup>


</s:VGroup>
</s:TitleWindow>



测试:
单击inputBox后结果如下:
inputBox
TextArea851
textDisplay
RichEditableText889


下面是在目标阶段和冒泡阶段捕获事件
我们从中可以看出两点
1 textarea包含在richeditable外面
2 因为richeidtable没有注册监听,在textarea里注册了监听,
所以在目标阶段时,什么也没做,上面的输出是在冒泡阶段textarea监听器输出的。
单击textarea后,所以输出时的target是richeditable,currenttarget是textarea
结论:richeditable是目标,textarea是冒泡阶段


扩展一下:
上面主要是想让textarea和button都能在Click事件中响应,并通过事件对象e来判断
如果想找到textarea就必须用e.currenttarget,那么button怎么办呢,其实button也可以e.currenttarget来找到,因为单击按钮时,在目标阶段捕猎按钮事伯,所以它currenttarget和target都是一样,一个值。

另外还想说点跟事件有关的话题

拿单击事件举例,舞台上有一个panel,panel中有多个组件都有单击事件,它们都可以是事件的发送者。你可以在舞台上注册监听(addEventListener),也可以panel中注册监听,也可以在button中注册监听,注册事件监听在哪里都可以。监听器也可以是任意实例对象的方法

热点排行