as学习笔记(二四)--一些杂项(二)
sshong 发表于2008年8月24日 10:00:00 更新于2008年10月26日 08:36:00
1、当定义类的构造函数时加了void返回,flex将无法显示构造函数的形参自动提示
譬如类A的构造函数
public function A(h:int):void{...}
在new A时,flex只能显示A(),
而如果定义为
public function(h:int){...}
则能显示A(h:int)。。。

2、关于flash舞台绘制的图形:(动态清空这些图形可能会用到)
对某显示元件,在flash的舞台上绘制的图形会转化为该元件的一个shape子元件,flash会根据某种法则来判断是生成多个shape还是一个就可以了(如果只有一层则肯定只有一个shape),譬如如果各层上都是普通的用绘图工具绘制出来的绘画,不管你这些图形是在一层上还是多层上,都会转化为一个shape,而如果各层上既有绘画又有文本框等其他,则可能会根据层来转换出多个shape。
测试方法:
trace(mc.numChildren);
for(var i:int=0; i<mc.numChildren; i++)
{
  trace(flash.utils.describeType(mc.getChildAt(i)));
  if(mc.getChildAt(i) is Shape)
     (mc.getChildAt(i) as Shape).graphics.clear();
}
大家可以在舞台上乱画图,然后也加几个文本框,加一个子元件,看看舞台绘制的图形是不是被清空了。

3、不是只有moveto、lineto、curveto才会改变当前绘画位置,如果你调用了drawRect、drawRoundRect、drawCircle、drawEllipse都会导致绘画位置发生改变,这之后你如果去lineto,一定要注意此时的起始点位置不是你想象的。如下例所示:

代码如下
selecter.addEventListener(Event.CHANGE, onchange);
function onchange(evt:Event):void
{
    var method:String = selecter.selectedItem.label;
    this.graphics.clear();
    this.graphics.beginFill(0xcc0000);
    if(method == "drawrect")
        this.graphics.drawRect(100,100,50,50);
    else if(method == "drawcircle")
        this.graphics.drawCircle(100,100,50);
    else if(method == "drawellipse")
        this.graphics.drawEllipse(100,100,50,20);
    else
        this.graphics.drawRoundRect(100,100,50,50,10);
    //
    this.graphics.endFill();
    this.graphics.lineStyle(1, 0x000000);
    //this.graphics.moveTo(100, 100);
    this.graphics.lineTo(200,200);
}

4、设置一个InteractiveObject的mouseenabled为false,同时对其设置的右键菜单contextMenu也无效了。

5、hasOwnProperty来判断某对象是否有某属性,如果是protected继承来的或者private定义的私有属性均返回false,只有public定义的或者继承来的属性才会为true。

6、flash.systems.Capabilities可以获取承载 SWF 文件的系统和播放器的相关属性,如screenResolutionX、Capabilities.screenResolutionY屏幕分辨率,os当前操作系统、hasmp3是否具有mp3解码器、version播放器版本等等很多有用的信息。

7、flash的bitmapdata的draw方法中有几个参数解释下
source是任何一个实现了IBitmapDrawable的对象,flash中的displayobject均实现了该接口
matrix是一个矩阵,你可以在绘画对象前先调整对象的坐标以达到特定的效果。
colorTransform用于调整位图的颜色值。  
blendMode指定生成位图的混合模式
clipRect是一个矩形,制定可用于绘制的区域,不指定就是对象全部。  
smoothing只在source是bitmapdata的情况下才进行平滑处理。

不能混淆matrix和cliprect的作用。
bitmapdata的draw某个显示对象都是从该对象的注册点开始绘制bitmapdata指定的宽高内容,如果该显示对象的内容区域的左上角不是注册点,需要调整matrix平移到注册点,而cliprect只是指定可以绘画的区域,区域之外的内容将不被绘制!
标签:无分类:As3&Flex阅读:4576
评论
暂无评论
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅