??xml version="1.0" encoding="utf-8" standalone="yes"?>久久99精品国产99久久,欧美精品1区,日本午夜精品久久久久http://www.aygfsteel.com/samyang/category/44592.html<br> <B>QQ:418148757</B><br> <B>Name:yangchuan</B><br> <b></b>zh-cnThu, 15 Apr 2010 23:24:49 GMTThu, 15 Apr 2010 23:24:49 GMT60flex基础之事件机?/title><link>http://www.aygfsteel.com/samyang/articles/318366.html</link><dc:creator>sam.chuan.yang</dc:creator><author>sam.chuan.yang</author><pubDate>Wed, 14 Apr 2010 13:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/samyang/articles/318366.html</guid><wfw:comment>http://www.aygfsteel.com/samyang/comments/318366.html</wfw:comment><comments>http://www.aygfsteel.com/samyang/articles/318366.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/samyang/comments/commentRss/318366.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/samyang/services/trackbacks/318366.html</trackback:ping><description><![CDATA[<p>Flex事g执行程Q?br /> W一阶段为:1:捕获阶段Q第二阶DؓQ(2Q目标阶D,3Q冒泡阶D)?br /> 所以:addEventListenerҎ(gu)注册的监听器有两U,W一U是处理捕获阶段的监听器QaddEventListener的第三个参数<code>useCapture</code> 为trueQ?br /> W二U就是处理目标和冒阶段的监听器Q第三个参数<code>useCapture</code> 为falseQ?br /> <br /> 捕获阶段程Q?br /> Flex会去查找事g的触发源Q它是通过Ҏ(gu)C元?root display object)逐层向下寻踪Qƈ从上往下,依次触发q些节点的当前事件的处理函数Q如果他们都用捕获阶D늚监听器注册了q个事gQ直到找?strong>事g发v源头的父节点</strong>。ƈ触发完父节点的这个事件ؓ止。但它不会调用事件触发源节点的事件?br /> 例如Q?br /> test.mxml文g下:<br /> application节点--vboxQid=vbQ节?-buttonQid=btQ节炏V?/p> <p><br /> 如果在application的creationComplete中:以上所有组件的click事g注册为捕L听器?br /> 如:<br /> addEventListener(MouseEvent.CLICK, btnClick2, true);  <br /> vb.addEventListener(MouseEvent.CLICK, btnClick3,true);  <br /> bt.addEventListener(MouseEvent.CLICK, btnClick4,true);  <br /> 如果在bt上点击,执行程如下Q?br /> Flash Player会去查找事g的触发源QbtQ,通过Ҏ(gu)C元?root display object)Q这里就是applicationQ逐层向下寻踪Qƈ从上往下,依次调用它们的click事gQ如果他们都注册了捕获阶D늚click事gQ直到找C件的发v源头的父节点Q上面例子中会找到vbQƈ执行完vb的click事g后,׃再查找下边的btlg和执行它的click事g?/p> <p>W二阶段Q?br /> 一般情况下Q第二阶D늚目标阶段Q也是执行mxml文档的目标节炚w|的那个事g处理函数Q然后再处理对应的监听器Q处理目标和冒阶段的监听器Q注册的那个处理函数?/p> <p> 如果文档该节点,没有配置事g处理Q则只执行通过addEventListener注册的事件处理方法,否则Q如果配|了Q就先执行mxml的配|函数处理,接着处理通过监听器注册的函数?/p> <p>最后就是冒泡阶D:<br /> q个阶段与捕获阶D늛反,它会从从目标节点的父节点开始依ơ向上查扑ƈ执行父节点的mxml配置事g和通过监听器注册的事g处理函数。(q些处理函数也是用处理目标和冒阶段的监听器注册的)<br /> <br /> <br /> 也就是说Q捕获阶D늚事g触发只能是用处理q个阶段的监听器L册。目标和冒阶段的事件触发,也只能是处理q个阶段的监听器L册。如果,要让同一个事Ӟ在捕获阶D|目标和冒泡阶D都执行的话Q需要用addEventListener注册两次Q将W三个参?code>useCapture</code> true和false各设|一ơ?/p> <img src ="http://www.aygfsteel.com/samyang/aggbug/318366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/samyang/" target="_blank">sam.chuan.yang</a> 2010-04-14 21:41 <a href="http://www.aygfsteel.com/samyang/articles/318366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex基础之函数对?/title><link>http://www.aygfsteel.com/samyang/articles/318237.html</link><dc:creator>sam.chuan.yang</dc:creator><author>sam.chuan.yang</author><pubDate>Wed, 14 Apr 2010 02:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/samyang/articles/318237.html</guid><wfw:comment>http://www.aygfsteel.com/samyang/comments/318237.html</wfw:comment><comments>http://www.aygfsteel.com/samyang/articles/318237.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/samyang/comments/commentRss/318237.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/samyang/services/trackbacks/318237.html</trackback:ping><description><![CDATA[Function<br />      在ecamscript规范中。函数都是一个Functioncd的对象, <p>而普通函敎ͼ和类定义的普通方法,以及c静态方法都有不同的地方?br /> 相同点:<br />   他们都是Functioncȝ对象?br /> 不同点:<br />    在作函数l定上,Q函数绑定:是函数赋值给另一个函敎ͼ或者利用call或applyҎ(gu)函数绑定到别的对象上调用)<br />    如果是类的普通函数绑定到别的对象上去Q那么函C的thisQ指的就是该cȝ实例Q无Z是用call方式Q还是将函数赋值给另一个对象,this始终指的是先前函数所在的那个cȝ实例对象Q而如果是一个普通函敎ͼthis指的是当前l定到的那个兌对象?br /> l对象动态创建的Ҏ(gu)和普通函CP因ؓ该方法其实就是将一个匿名的普通函数赋l对象的Ҏ(gu)变量的,如:obj.fun=function(str){alert(str)} ?br /> l定方式Q比如obj.fun.call(obj2) q个方式是fun函数l定到obj2上执?br /> W二U方式: obj2.funName= obj.fun; obj2.funName();<br /> Z么说W二U方式也是一U绑定,写个例子证明一下:<br /> 如果obj.fun(){h(hun)于obj.fun.call(obj);<br /> 如果Qobj2.funName= obj.fun; //因ؓ函数是Functioncd的对象,那么obj2.funName?obj.fun一样都是引用同一个对象?br /> 那么obj2.funNameQ)也可{h(hun)于obj.fun.call(obj2);</p> <p><br /> 说明一下:cȝ静态函数是定义cȝ时候就存在了它的Function对象Q而类的普通函数则是在c?实例化的时候才生成对应的函数的Function对象<br /> <br /> 关于callҎ(gu)Q详见Function的callҎ(gu).api文档?br /> 函数l定Q其实就是指Q将一个函C(f)时的赋给某个对象Q该对象׃(f)时的拥有了这个函敎ͼ但实际上对象上是没有q个函数定义?/p> <img src ="http://www.aygfsteel.com/samyang/aggbug/318237.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/samyang/" target="_blank">sam.chuan.yang</a> 2010-04-14 10:41 <a href="http://www.aygfsteel.com/samyang/articles/318237.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex之弹出窗口数据传?/title><link>http://www.aygfsteel.com/samyang/articles/317950.html</link><dc:creator>sam.chuan.yang</dc:creator><author>sam.chuan.yang</author><pubDate>Sat, 10 Apr 2010 09:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/samyang/articles/317950.html</guid><wfw:comment>http://www.aygfsteel.com/samyang/comments/317950.html</wfw:comment><comments>http://www.aygfsteel.com/samyang/articles/317950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/samyang/comments/commentRss/317950.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/samyang/services/trackbacks/317950.html</trackback:ping><description><![CDATA[<p>弹出H口Q?br /> 利用PopUpManager我们可以把flex容器lg作ؓ一U弹出窗口,q样也是便于我们程序分块编写的方式之一。我们通常会自定义一个容器组Ӟ作ؓ弹出H口的内宏V?br /> 举一个例子来说明我们可能利用弹出H口的地斏V?/p> 我们做用户信息的增删Ҏ(gu)。第一步我们会做一个ModuleQ用于布|datagridlg和增删查三个按钮Q那么在q个Module中我们的datagrid主要是用于昄查询到的用户数据列表。那么增加按钮事件就是我们弹Z个窗口来~辑数据Q完成后在该弹出H口中点ȝ定按钮,数据传送给Module的一个函数。ƈp个函C后台交互Q最l数据通过后台d到数据库。那么这是弹出窗口向父窗体传递数据的例子Q另外我们在Module的datagrid中双击选中的数据,也会弹出H口Qƈ该条datagrid的这条记录数据显C在弹出H口的相应输入框中,供用L辑。当然这是父窗体向弹出H口传递数据的例子了?br /> 在flex中,我所知道的父子窗口传递数据有两种Q姑且先让我q么命名q区分它们:一U是事g处理型,另一U就是函数绑定型?br /> W一U方式(事g处理型)Q先看代码,假设我们已经自定义好弹出H体lg。那么看我们怎么在ModuleQ也是父窗体)中来调用弹出H体的? <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080"> 1</span><img id="Codehighlighter1_62_434_Open_Image" onclick="this.style.display='none'; Codehighlighter1_62_434_Open_Text.style.display='none'; Codehighlighter1_62_434_Closed_Image.style.display='inline'; Codehighlighter1_62_434_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_62_434_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_62_434_Closed_Text.style.display='none'; Codehighlighter1_62_434_Open_Image.style.display='inline'; Codehighlighter1_62_434_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #000000">protected </span><span style="color: #0000ff">function</span><span style="color: #000000"> button1_clickHandler(event:MouseEvent):</span><span style="color: #0000ff">void</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_62_434_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_62_434_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080"> 2</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /> </span><span style="color: #008000">//</span><span style="color: #008000">q里是新创徏一个弹出窗体对象,UserWin定义的一个容器组件对?/span><span style="color: #008000"><br /> </span><span style="color: #008080"> 3</span><span style="color: #008000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">         </span><span style="color: #0000ff">var</span><span style="color: #000000"> win:UserWin </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> UserWin(); <br /> </span><span style="color: #008080"> 4</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="color: #0000ff">var</span><span style="color: #000000"> user:TblBsUserType </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> TblBsUserType();<br /> </span><span style="color: #008080"> 5</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">user对象传递给弹出H体Q其中data为win里头的一个空对象。在win里边的代码是public data:Object={};</span><span style="color: #008000"><br /> </span><span style="color: #008080"> 6</span><span style="color: #008000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">    win.data.user </span><span style="color: #000000">=</span><span style="color: #000000"> user;<br /> </span><span style="color: #008080"> 7</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">通过q种Ҏ(gu)lwind一个事件监听器</span><span style="color: #008000"><br /> </span><span style="color: #008080"> 8</span><span style="color: #008000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">    win.addEventListener(</span><span style="color: #000000">"</span><span style="color: #000000">sendData</span><span style="color: #000000">"</span><span style="color: #000000">,onSendData);<br /> </span><span style="color: #008080"> 9</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                PopUpManager.addPopUp(win,</span><span style="color: #0000ff">this</span><span style="color: #000000">,</span><span style="color: #0000ff">true</span><span style="color: #000000">); <br /> </span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                PopUpManager.centerPopUp(win);<br /> </span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />            }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> </span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_478_565_Open_Image" onclick="this.style.display='none'; Codehighlighter1_478_565_Open_Text.style.display='none'; Codehighlighter1_478_565_Closed_Image.style.display='inline'; Codehighlighter1_478_565_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_478_565_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_478_565_Closed_Text.style.display='none'; Codehighlighter1_478_565_Open_Image.style.display='inline'; Codehighlighter1_478_565_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" />private </span><span style="color: #0000ff">function</span><span style="color: #000000"> onSendData(e:Event):</span><span style="color: #0000ff">void</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_478_565_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_478_565_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                </span><span style="color: #0000ff">var</span><span style="color: #000000"> user:UserType </span><span style="color: #000000">=</span><span style="color: #000000"> e.currentTarget.data.user;<br /> </span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                Alert.show(ro.toString());<br /> </span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />            }</span></span></div> 如上注释Q我们父H体向子H体传递数据的时候其实就是像子窗体的一个已存在的对象中动态添加数据属性即可。这一Ҏ(gu)ecmascript的规范,也是他的一个很好的优点?br /> 最后那个方法,其实是我们处理弹出H口传数据给父窗体的一个处理过E,其实很简单,Z解耦,我们一般不会在弹出H口中做数据的处理过E,而是直接由弹出窗口传回数据,交给父窗体处理。那么事件分发处理的方式Q显而易见就是我们在创徏弹出H体对象的时候,动态的l子H体注册一个事件监听器Q,然后弹出H体的确定按钮中调用dispatchEvent(new Event("sendData"));卛_数据传回给父窗体中定义的那个事件处理函数去处理。其中e.currentTarget表示当前正在使用某个事g侦听器处?Event 对象的对象。也是上边的win对象?br /> W二U函数绑定型Q其实就是很单,我们知道在ecmascript中函C是一U变量,那么可以利用这一点将函数作ؓ一个变量传递给弹出H体Q同样可以达到我们处理的效果Q?br /> 代码如下Q?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008080"> 1</span><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #000000">protected </span><span style="color: #0000ff">function</span><span style="color: #000000"> button1_clickHandler(event:MouseEvent):</span><span style="color: #0000ff">void</span><span style="color: #000000"><br /> </span><span style="color: #008080"> 2</span><span style="color: #000000"><img id="Codehighlighter1_66_339_Open_Image" onclick="this.style.display='none'; Codehighlighter1_66_339_Open_Text.style.display='none'; Codehighlighter1_66_339_Closed_Image.style.display='inline'; Codehighlighter1_66_339_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_66_339_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_66_339_Closed_Text.style.display='none'; Codehighlighter1_66_339_Open_Image.style.display='inline'; Codehighlighter1_66_339_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" />            </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_66_339_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_66_339_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080"> 3</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                </span><span style="color: #0000ff">var</span><span style="color: #000000"> win:UserWin </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> UserWin(); <br /> </span><span style="color: #008080"> 4</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                </span><span style="color: #0000ff">var</span><span style="color: #000000"> user:TblBsUserType </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> TblBsUserType();<br /> </span><span style="color: #008080"> 5</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                win.data.user </span><span style="color: #000000">=</span><span style="color: #000000"> user;<br /> </span><span style="color: #008080"> 6</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                win.data.send </span><span style="color: #000000">=</span><span style="color: #000000"> add;<br /> </span><span style="color: #008080"> 7</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                </span><span style="color: #008000">//</span><span style="color: #008000">win.addEventListener("sendData",onSendData);</span><span style="color: #008000"><br /> </span><span style="color: #008080"> 8</span><span style="color: #008000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">                PopUpManager.addPopUp(win,</span><span style="color: #0000ff">this</span><span style="color: #000000">,</span><span style="color: #0000ff">true</span><span style="color: #000000">); <br /> </span><span style="color: #008080"> 9</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                PopUpManager.centerPopUp(win);<br /> </span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />            }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> </span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">l果处理函数</span><span style="color: #008000"><br /> </span><span style="color: #008080">13</span><span style="color: #008000"><img id="Codehighlighter1_396_480_Open_Image" onclick="this.style.display='none'; Codehighlighter1_396_480_Open_Text.style.display='none'; Codehighlighter1_396_480_Closed_Image.style.display='inline'; Codehighlighter1_396_480_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_396_480_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_396_480_Closed_Text.style.display='none'; Codehighlighter1_396_480_Open_Image.style.display='inline'; Codehighlighter1_396_480_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #000000">private </span><span style="color: #0000ff">function</span><span style="color: #000000"> add(user:TblBsUserType):</span><span style="color: #0000ff">void</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_396_480_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_396_480_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">14</span><span style="color: #000000"><img id="Codehighlighter1_446_475_Open_Image" onclick="this.style.display='none'; Codehighlighter1_446_475_Open_Text.style.display='none'; Codehighlighter1_446_475_Closed_Image.style.display='inline'; Codehighlighter1_446_475_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_446_475_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_446_475_Closed_Text.style.display='none'; Codehighlighter1_446_475_Open_Image.style.display='inline'; Codehighlighter1_446_475_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />                </span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">!=</span><span style="color: #000000"> user.butyId </span><span style="color: #000000">&&</span><span style="color: #000000"> </span><span style="color: #000000">""</span><span style="color: #000000"> </span><span style="color: #000000">!=</span><span style="color: #000000"> user.butyId)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_446_475_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_446_475_Open_Text"><span style="color: #000000">{<br /> </span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />                    ro.addUser(user);<br /> </span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />                }</span></span><span style="color: #000000"><br /> </span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />            }</span></span></div> <br /> 那么在弹出窗体中我们只需要调用data.send(data.user);可以了?br /> <br /> 备注Q其实以上两U方法,Z使用方便Q其实都q可以优化的地方Q比如,事g处理方式Q我们还可以在自定义lg中声明事?br /> <fx:Metadata><br />   [Event(name="sendData",type="flash.events.Event")]<br />  </fx:Metadata><br /> 让用组件的mxml文档也能昄注册事gQ如Q?lt;user:UserWin x="115" y="231" sendData=“sendDataHandler(event)”><br />  </user:UserWin><br /> <br /> 另外Q在函数处理方式上,我们是利用函数绑定到对象的方式,来处理数据的Q其实,Z使用接口的h更明一些,我们可以把这个函数预先定义ؓlg的属性,比如Q[Bindale]public var sendData:Function;q样在创建组件对象的地方Q就可以明确的把用户自定义的处理函数赋值给q个属性(sendDataQ?br /> MQ不怎么P事g处理和函数处理都可以完成我们的要求,任选其一卛_?br /> <br /> <br /> <br /> <img src ="http://www.aygfsteel.com/samyang/aggbug/317950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/samyang/" target="_blank">sam.chuan.yang</a> 2010-04-10 17:07 <a href="http://www.aygfsteel.com/samyang/articles/317950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex 动态创建组件之容器自适应大小http://www.aygfsteel.com/samyang/articles/317935.htmlsam.chuan.yangsam.chuan.yangSat, 10 Apr 2010 07:59:00 GMThttp://www.aygfsteel.com/samyang/articles/317935.htmlhttp://www.aygfsteel.com/samyang/comments/317935.htmlhttp://www.aygfsteel.com/samyang/articles/317935.html#Feedback0http://www.aygfsteel.com/samyang/comments/commentRss/317935.htmlhttp://www.aygfsteel.com/samyang/services/trackbacks/317935.htmlZ节约swf文g的大,可以采取动态创建组件的方式Q那么动态创建组件就要考虑到组件容器自适应大小?br /> 比如Q?br /> <s:BorderContainer x="5" y="5" width="100%"  right="5" left="5"
        autoLayout="true" id="bc">
  <s:layout >
   <s:TileLayout />
  </s:layout>
 </s:BorderContainer>
我要在上边这个容器里动态装入一些组Ӟ很有可能容器的高度不够装下多个组Ӟq个时候,p让程序动态的改变容器的大?br /> 改变容器的大可以根据添加的最后一个组件的top和height来决定,那么我们什么时候才能获取得最后一个组件的大小呢?看下边的代码Q?br />

public function init():void{
    
var user:TblBsUserType = new TblBsUserType();
    
function initFormItem(label:String,porp:String):FormItem{
     
var fi:FormItem  =ElementFactory.createFormItem(label,user,porp);
     fi.setStyle(
"paddingTop",10);
     fi.setStyle(
"paddingLeft",20);
     bc.addElement(fi);
     
return fi;
    }

    initFormItem(
"用户~码Q?/span>","butyId");
    initFormItem(
"?nbsp;?nbsp;名:","butyName");
    initFormItem(
"用户密码Q?/span>","butyPassword");
    
var fi:FormItem=initFormItem("用户角色Q?/span>","butySate");
  
//注意下边q种方式可以讄bc的高度吗Q?Q?/span>
     bc.height =fi.top+ fi.height+10;
}
如果动态创建组Ӟ那么直接获取lg的高度是不行的。像上边q种情况Qfi.height的值多数情冉|0.
其实Ҏ(gu)flexlg的生命周期,我们知道只有在creationComplete事g的时候,lg才完成了它所有的初始化工作,包括lg的位|,样式Q大等信息。所以,要想获得lg的高宽,我们应该在creationComplete事g中来完成q个d。所以上?br /> bc.height=fi.top+fi.height+10;
应该修改为:
fi.addEventListener("creationComplete",function(){
     bc.height =fi.top+ fi.height+10;
    });
q样才可以正设|父容器的高度?br />



sam.chuan.yang 2010-04-10 15:59 发表评论
]]>
վ֩ģ壺 | կ| | | Ҧ| | | | ɽ| Զ| ܿ| ɽ| | | | ˱| | ݰ| | | | | | | ˫| ̨| ʡ| | | | | | ƽ̶| ˮ| ά| | | | | | |