发新话题
打印

[编程] 学习flash下拉列表(comboBox)编程经验。

学习flash下拉列表(comboBox)编程经验。

在flash8主页有这样一个帖子
flash下拉列表(comboBox)[源码] http://www2.flash8.net/teach/6697.htm
1、画矩形------------借鉴共使用功能模块方式,比手画效率高,容易定位。
function createRectangle(x:Number, y:Number, w:Number, h:Number, mc:MovieClip) {
mc.beginFill(0xFF0000);
mc.moveTo(x, y);
mc.lineTo(x+w, y);
mc.lineTo(x+w, y+h);
mc.lineTo(x, y+h);
mc.lineTo(x, y);
mc.endFill();
}
如对createRectangle(0, 23, 100, this._parent.arrList.length*24, this._parent.mcBak);
跟踪this._parent.arrList.length 结果 4  ---其数据来源是
var arrTem:Array = [{label:"写真自拍", data:1}, {label:"生活娱乐", data:2}, {label:"自然风景", data:3}, {label:"科技时代", data:4}];
结论:
通过数组建立一个动态的4X24高,0,23坐标,宽100,MC是_level0.mcXiaLa.mcBak
方法是通过跟踪 this._parent.mcBak 结果得出_level0.mcXiaLa.mcBak的MC
2、 生成文本
_mc.setTxt = function(target_mc:MovieClip, strTalkYor:String, x:Number, y:Number, color1:Number) {
  target_mc.createTextField("my_txt", 1, x, y, 100, 30);
//  TextField 类-在其帮助文件中的表述是:
public createTextField(instanceName:String, depth:Number, x:Number, y:Number, width:Number, height:Number) : TextField

创建一个新的空文本字段作为在其上调用此方法的影片剪辑的子级。可以使用 createTextField() 方法在 SWF 文件播放时创建文本字段。depth 参数确定新文本字段在影片剪辑中的深度级别(z-顺序位置)。每个深度级别只能包含一个对象。如果您在已具有文本字段的深度上创建一个新文本字段,则新文本字段将替换现有文本字段。若要避免覆盖现有文本字段,可使用 MovieClip.getInstanceAtDepth() 方法确定特定深度是否已被占用,或者使用 MovieClip.getNextHighestDepth() 方法确定未占用的最高深度。文本字段位于 (x, y),尺寸为 widthheight。参数 xy 相对于容器影片剪辑;这些参数对应于文本字段的 _x_y 属性。widthheight 参数对应于文本字段的 _width_height 属性。


target_mc.my_txt.multiline = true
  //
  target_mc.my_txt.selectable = false;
  //指示文本字段是否为多行文本字段
  target_mc.my_txt.wordWrap = true;
  //是否自动换行
  target_mc.my_txt.my_fmt = new TextFormat();
  target_mc.my_txt.my_fmt.color = color1;
  //颜色
  //target_mc.my_txt.my_fmt.underline = true;
  //下划线
  target_mc.my_txt.my_fmt.bold = true;
  //加粗
  target_mc.my_txt.my_fmt.font = "Arial";
  //
  target_mc.my_txt.text = strTalkYor;
  target_mc.my_txt.setTextFormat(target_mc.my_txt.my_fmt);

[ 本帖最后由 ning58 于 2008-2-21 10:50 编辑 ]

TOP

mygamemylove_com.iniDropList(mcXiaLa, arrTem, function () {
});的用法让理解了半天???

采用数据跟踪法
_mc.arrList = arrList; 跟踪_mc.arrList结果 [object Object],[object Object],[object Object],[object Object]
_mc.value = _mc.arrList[0].data; 跟踪_mc.arrList[0].data结果 1
才明白其用法
mygamemylove_com.iniDropList = function(_mc:MovieClip, arrList:Array, funWhenPress:Function)
在功能函数中用mc传递mcXiaLa
arrList传递的数组是var arrTem:Array = [{label:"写真自拍", data:1}, {label:"生活娱乐", data:2}, {label:"自然风景", data:3}, {label:"科技时代", data:4}];
funWhenPress:Function----function()的用法还需要进一步理解。

[ 本帖最后由 ning58 于 2008-2-21 11:56 编辑 ]

TOP

很好,学习了,谢谢

TOP

弄这个下拉菜单把我头都搞大了,现在明白一些了,谢谢啦

TOP

这段是什么意思了

function makeNewPlaceKindList1(arr)
{
    levelNameMC.removeAll();
    for (i in arr)
    {
        levelNameMC.addItem({label: arr, data: arr});
    } // end of for...in
    makeNewPlaceKindList2(rPath[arr[arr.length - 1]]);
} // End of the function
function makeNewPlaceKindList2(arr)
{
    placeKindMC.removeAll();
    for (i in arr)
    {
        placeKindMC.addItem({label: arr.kindName, data: arr.kindID});
    } // end of for...in
} // End of the function

TOP

发新话题