日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ActionScript3.0自定义Flex组件问题 重写组件的使用

發布時間:2025/6/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActionScript3.0自定义Flex组件问题 重写组件的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

最近在做Flex的一些學習,需要對Flex組件重寫,當然可以兩種選擇MXML和ActionScript3.0重寫,當然MXML的可視化的操作為重寫提供了方便,但是要是更改組件的默認屬性和添加一些框架屬性ActionScript是必須的。我的經歷重寫一個可以最大化,最小化,關閉的Panel,這是改變Flex中Panel的本質屬性的,只用通過ActionScript3.0來完成了。 網上有個SuperPanel和Flexlib寫的相當成熟和不錯,我選擇的是SuperPanel(個人覺得代碼寫的相當漂亮)。 寫好以后,就是MXML中應用了由于繼承了Panel,所以可以直接在<mx:></mx>中顯示,但是這里會出現一個問題,我個人覺得是編輯工具應該改進的或者說是Bug,組件繼承Panel自定義為SuperPanel,在要應用的MXML應用程序中里的容器里添加使用,OK,一切都可以通過,但是 <mx:Canvas
?? ??? ?id="panelContainer"
?? ??? ?width="100%" height="100%"
?? ?  >
?? ??? ?
?? ??? ?<containers:SuperPanel
?? ??? ??? ?id="myPanel"
?? ??? ??? ?title="My Panel"
?? ??? ??? ?x="20" y="20"
?? ??? ??? ?width="300" height="200"
?? ??? ??? ?minWidth="200" minHeight="100"
?? ??? ??? ?horizontalAlign="center"
?? ??? ??? ?verticalAlign="middle"
?? ??? ??? ?allowDrag="true"
?? ??? ??? ?allowResize="true"
?? ??? ??? ?allowClose="true"
?? ??? ??? ?allowMaximize="true"
?? ??? ??? ?allowMinimize="true"
?? ??? ??? ?sizeRatio="{useSizeConstraintCheck.selected ? '4:3' : null}"
?? ??? ??? ?resizeEffect="Resize"
?? ??? ??? ?moveEffect="Move"
?? ??? ??? ?close="panelContainer.removeChild(myPanel);"
?? ??? ?>

?? ??? ??? ?<mx:Label
?? ??? ??? ??? ?text="SuperPanel"
?? ??? ??? ??? ?fontSize="24"
?? ??? ??? ??? ?fontWeight="bold"
?? ??? ??? ?>
?? ??? ??? ??? ?
?? ??? ??? ??? ?<mx:filters>
?? ??? ??? ??? ??? ?<mx:DropShadowFilter alpha="0.5"/>
?? ??? ??? ??? ?</mx:filters>
?? ??? ??? ??? ?
?? ??? ??? ?</mx:Label>
?? ??? ??? ?
?? ??? ??? ?<mx:Label
?? ??? ??? ??? ?text="By: Brandon Meyer"
?? ??? ??? ?/>
?? ??? ??? ?
?? ??? ?</containers:SuperPanel>
?? ??? ?
?? ?</mx:Canvas>
???

當你想在Reperter中這樣使用的話,就會報錯,看代碼:

<mx:Canvas id="panelShow" width="100%" height="100%" ><mx:ToggleButtonBar id="ToggleBtn" dataProvider="{myChaters}" /><mx:ViewStack id="myChaters" width="100%" height="100%" x="4" y="19"><mx:Repeater id="chatWindow" dataProvider="{allChatPaneWindow}"><containers:SuperPanelid="myPanel"title="{chatWindow.currentItem.label}"x="20" y="20"width="300" height="200"minWidth="200" minHeight="100"horizontalAlign="center"verticalAlign="middle"allowDrag="true"allowResize="true"allowClose="true"allowMaximize="true"allowMinimize="true"sizeRatio="{true ? '4:3' : null}"resizeEffect="Resize"moveEffect="Move"close="this.parent.removeChild(myPanel);"></containers:SuperPanel></mx:Repeater></mx:ViewStack></mx:Canvas>

?這里就會報錯,1067: Array 類型值的隱式強制指令的目標是非相關類型 flash.display:DisplayObject ,我就不能理解,為什么是繼承Panel來的,但這里就成為非DisplatObject了,不可理解,上面的測試明顯是DisplayObject,而且經過編譯可以知道SuperPanel就是Panel的加強版!這里編輯器應該可以獲得信息,無奈Google+Baidu

最后還是沒有解決,去了Adobe官網。

<mx:Repeater id="chatWindow" dataProvider="{allChatPaneWindow}"> 需要把Array轉化為mx.contrains里面包含的組件,才能傳遞信息,所以出現這個錯誤,
所以改一下就OK了:                       <containers:Panelid="myPanel"title="{chatWindow.currentItem.label}"x="20" y="20"width="300" height="200"minWidth="200" minHeight="100"horizontalAlign="center"verticalAlign="middle"allowDrag="true"allowResize="true"allowClose="true"allowMaximize="true"allowMinimize="true"sizeRatio="{true ? '4:3' : null}"resizeEffect="Resize"moveEffect="Move"close="this.parent.removeChild(myPanel);"></containers:Panel>

?錯誤得到解決,花了幾個小時的時間,最后總是解決了。但是不太明白的是,為什么編輯器不能直接識別出SuperPanel????????

希望這些對學習Flex遇到相似問題的有所幫助!!!!!



轉載于:https://www.cnblogs.com/blog-li/archive/2012/02/13/Flex.html

總結

以上是生活随笔為你收集整理的ActionScript3.0自定义Flex组件问题 重写组件的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。