文章出處

RadioButton基礎篇

RadioButton是常用組件之一,但是做的并不非常好,下面隨便說說關于RadioButton的使用。打開窗口,組件,可以看到RadioButton。



把它拖出來打開熟悉面板,可以看到以下屬性:


RadioButton.data:與單選按鈕實例相關的值。
RadioButton.groupName:按鈕組的名字
RadioButton.label:顯示文本
RadioButton.labelPlacement:按鈕的LABEL的方向。
RadioButton.selected:按鈕是否被選中
還有兩個是組的屬性:
RadioButtongroup.selectedData:組中被選中的按鈕的Data屬性
RadioButtongroup.selection:組里被選中的按鈕


首先來說組的概念


都考過四級吧?單選題中,一般有ABCD四個選項。對,這四個選項就可以看做是一組如下圖:


四個按鈕的組都是test1,這么做的意義就是,當我們選中其中1個按鈕的時候其他3個按鈕都會回到未被選中狀態,也就是說一組只可能有一個被選中的項,這個項可以直接被RadioButtongroup.selection引用。如果組里沒有選任何項的話,RadioButtongroup.selection=undefined。
分組之后,我們就可以順利的做test2,test3了,而不出現彼此影響了。
下面講講如何把FLASH中選中的內容顯示出來:首先我們在舞臺上放測試題目,然后我們在下面放一個按鈕叫做btn。
然后我們在所有的按鈕中的data里都寫為2,把正確的選項的data做成1
然后打開動作面板,這一幀上寫下如下代碼:
var socre = 0;
btn.onRelease = function() {
switch (test1.selection.data) {
case 1 :
trace("right");
socre ;
break;
case 2 :
trace("wrong");
break;
default ://這個default實際上就是在等著組里對沒有選中任何選項時返回的那個undefined
trace("請選擇答案");
break;
}
trace(socre);
};
實際上可以換一種寫法將
switch (test1.selection.data) {
換成
switch (test1.selectedData) {
這兩行語句實際上是一樣的,但是寫法不一樣。不過這個無所謂。
除了這樣寫,還可以寫成其他的模式:比如將test1的四個分別命名為t1r1,t1r2,t1r3,t1r4
然后可以用下面的代碼來寫
btn.onRelease = function() {
if (t1r2.selected) {
trace("right");
socre ;
} else {
trace("wrong!");
}
這樣寫的后果就是要命名很多個元件,但是可以不用給按鈕寫data,而剛才用組的話,只需要在組里加data,剩下的一個組名就全部解決了。
不過這個題目就是一個簡單的對錯判斷,所以怎么寫都無所謂,但是如果按鈕上的data值要被用到比如時下流行的一些測試性格的小東西,group selectedData就方便一些。


下面是RadioButton提高篇

這里說一下RadioButton的禁用和啟用,以及偵聽器的使用。
FLASH比較蠢,按照下面的代碼,你完全寫不出效果的。
if (cbx.selected == true) {//此代碼為錯誤代碼
_root.g3_1.enabled = true;
_root.g3_2.enabled = true;
} else {
g3_1.enabled = false;
g3_2.enabled = false;
}
首先在舞臺上放兩個RadioButton,命名為g3_1,g3_2 另外放一個CheckBox叫做cbx
g3_1.enabled = false;//將RadioButton禁用。
g3_2.enabled = false;
mylistener = new Object();//新建偵聽器
mylistener.click = function(eventObject) {
if (cbx.selected == true) {//如果cbx被選中
_root.g3_1.enabled = true;
_root.g3_2.enabled = true;
} else {
g3_1.enabled = false;
g3_2.enabled = false;
}
};
cbx.addEventListener("click", mylistener);//將偵聽器添加到cbx上
這里的enabled屬性是從button類繼承下來的。偵聽器的添加方式也完全一樣,在這里CheckBox和RadioButton是完全一樣的。RadioButton也可以按照給CheckBox加偵聽器的方式加上偵聽器。
功能上基本就這么多下面說一下RadioButton的外觀
首先說正統的辦法
基本上說,我很討厭FLASH的一些UI組件的外觀,正如惹急了我常常會自己寫一個滾動條而不用FLASH自帶的。
RadioButton.setSize(50,50)//里面是兩個數值,寬和高。
RadioButton.setStyle("fontFamily","Arial")//是可以的,但是換成漢字字體的時候就不一定有用了。其他論壇上有一些解決辦法如:自己在舞臺上放一個textfield將字體設置成黑體,然后用getStyle把字體抽出來給setStyle使用。
RadionButton.setStyle("fontSize",20)//是可以用,但是超級不爽的是,如果你把字體設置過大的時候它顯示出來的字是不完全的。
以下是一些setStyle的其他屬性名稱。有一些是可以用的
themeColor 組件的背景。
color 組件文本顏色。
disabledColor 禁用時的文本顏色。
fontFamily 文本的字體
fontSize 字體的大小
fontStyle 字體樣式:“常規”或“斜體”。
fontWeight 是否加粗。
RadioButton.labelPlacement可以改RadioButton和label的相對位置默認為right
下面說一些歪門邪道
RadioButton是不能直接變形的,但是這個不妨礙我們把它放到MC里面之后變形。這個可以替代setsize(),但是千萬注意,RadioButton不能旋轉,宣傳會讓label完全失效。
UI的label都很垃圾,完全可以不用。自己用靜態文本寫上去不就好了。這樣label失效的問題也同時解決。
關于顏色,從RadioButton.setStyle()里改,當然可以,但是有更好的辦法的時候你會選擇它么?自己用代碼或者文字描述UI的界面顏色?太不靠譜了。FLASH8支持對FLASH中間MC的混合模式的更改,用這個就可以直接改UI的顏色。當然包括RadioButton的顏色。
方法就是直接用方塊畫一個色塊放在RadioButton上面一層,蓋住RadioButton,然后將混合模式改為疊加即可。背景色的更改方式雷同,只是如果兩個顏色修改都要用的時候要計算一下混合出來的背景色值。
注意,如果使用上面說的辦法,我們的UI在不可用狀態下,到可用狀態下的時候Label的顏色會變回去(要不怎么說FLASH自帶的UI很爛呢?)。這個時候就要重新在AS里刷新一下那里的顏色可以用attachMovie()和RadioButton的_x ,_y的值直接在原先的位置上再復制一個色塊出來。

歡迎轉載:http://www.kanwencang.com/bangong/20161206/63855.html

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()