As3.0使用小技巧一

1、完全屏蔽鼠标右键功能: stage.addEventListener(MouseEvent.RIGHT_CLICK, function onRightClick(e:MouseEvent) { } );   

2、数组元素的删除:var vegetables:Array = new Array("spinach",
                 "green pepper",
                 "cilantro",
                 "onion",
                 "avocado");
vegetables.splice(0, 1);trace(vegetables);  即删除索引0处的数组元素

3、进制转换:进制转换是计算机专业的必修课,也是我们编程人员的必备知识,但是很多人忽视了掌握这些知识的重要性和必要性。

        在AS3中我们可以借助String类来实现进制的转换,比如我们将把一个十六进制转换成10进制:

var num16:Number = 0xff0000;var num10Str:String = num16.toString(10);trace(num10Str);//16711680var num10:Number = parseInt(num10Str, 10);trace(num10);//16711680

        我们看到,使用Number/Int/Uint对象的toString方法可以把一个数字转化成任何进制的数字的字符串(由此方法的参数决定),欲把字符串转化成Number对象,可以使用parseInt方法,此方法首个参数接受一个字符串类型的对象,用以指定需转换成Number的字符串;第二个参数接受一个int类型对象,用以指定将转换到的数字进制,可以是8、10、16等等。若无法转换,则会返回NaN。

进制转换的用途

设置颜色:我们知道,AS中的颜色值一般都是使用的十六进制,如0xFF0000。那么如果我们提供一个输入框给用户,让用户自行设置颜色值的话,我们就面临着一种情况就是把字符串转换成16进制,下例演示了如何把一个字符串转化成16进制颜色:

var colorInput:String = "FF0000";var num16:Number = parseInt(colorInput, 16);                        trace(num16.toString(16));//ff0000                        var textFiled:TextField = new TextField();textFiled.textColor = num16;

4、数据类型的校验:

  • instanceof运算符在AS3时代已经过时,它用一个对象是不是该类及其父类的实例,返回一个布尔值。
  • is运算符用来检验一个对象是不是该类及其父类的实例以及与它们有没有实现了给定的接口,返回一个布尔值
  • typeof用于简单数据类型和复杂数据类型的检验。
  • as运算符用于复杂数据类型的检验,检验一个表达式是不是给定的数据类型。但和is运算符不同,as 运算符返回该表达式的值,没有值返回null
  • as运算符最主要用途应该是显示转换复杂数据类型,这一点Adobe似乎在帮助文件中没提及

5、文本竖排效果实现

import flash.text.engine.TextBlock;
import flash.text.engine.ElementFormat;
import flash.text.engine.ContentElement;
import flash.text.engine.TextElement;

var linePosition:Number = this.stage.stageWidth - 45;
var tb:TextBlock=new TextBlock();
var shijingText:String="葛之覃兮,施于中谷,维叶萋萋。黄鸟于飞,集于灌木,其鸣喈喈。葛之覃兮,施于中谷,维叶莫莫。是刈是濩,为絺为绤,服之无斁。言告师氏,言告言归。薄污我私,薄浣我衣。害浣害否,归宁父母。";

var format:ElementFormat = new ElementFormat();
format.fontSize = 12;
format.color = 0xCC0000;
format.textRotation = TextRotation.AUTO;

tb.lineRotation=TextRotation.ROTATE_90;
tb.baselineZero = TextBaseline.IDEOGRAPHIC_CENTER;

tb.content=new TextElement(shijingText,format);

var previousLine:TextLine = null;
while (true)
{
var textLine:TextLine = tb.createTextLine(previousLine, 180);
if (textLine == null)
   break;

textLine.y = 20;
textLine.x = linePosition;
linePosition -= 25;
addChild(textLine);
previousLine = textLine;
}As3.0使用小技巧一_第1张图片


   

你可能感兴趣的:(flash)