登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

强大才能生存

国防、国力、国人

 
 
 

日志

 
 

AS入门第六课:文本与字符  

2009-03-13 12:20:58|  分类: AS2.0课堂 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  • 第1页 第一节-创建文本
  • 第2页 第二节-文本属性
  • 第3页 第三节—事件与方法
  • 第4页 第四节—字符串
  • 第5页 实例—打字游戏

      

    上一课、AS入门第五课:数组

    文本与字符串

    在制作flash动画时,常常会用到文本和字符串,首先来看看文本.

    一 创建文本框

    在创作环境中创建文本框

    在创作环境中创建文本框很简单,新建一flash文件,用文本工具在舞台上画一个文本框,这样文本框就建好了.文本框建好后,需要进行设置.现在打开属性面板.首先要确定文本框的类型,点开类型下拉列表可以看到共有三种文本框类型可供选择:静态文本、动态文本、输入文本.静态文本相当于标签,在AS中不能进行操作,本课程不介绍.以下文本框均是指动态文本和输入文本.动态文本和输入文本可在运行时进行操作.动态文本是运行时动态改变文本内容;输入文本是在运行时可由用户输入文本内容.为了在AS中对其进行操作应在属性面板中为其命名.有两种方法可以读取和设置文本框的内容,一种方法是设置或读取文本框的text属性.text属性代表文本框的内容.

    例:在舞台上画一文本框,设置其类型为动态文本,为其取名为mytext1_txt.然后在帧动作面板中输入:

    mytext1_txt.text="动态文本框"

    测试影片,文本框中将显示"动态文本框".

    在属性面板中,还可以设置大小、位置、字体、字体大小、颜色、边框等属性.

    设置和读取文本内容的另一个方法是给文本框设置变量.这种方法现在不推荐使用,而主张使用text属性.在属性面板的右下部有一"变量"文本框,在这里可以为文本框设一变量,那么这一变量就代表文本框的内容.例我们在这里输入a,然后将帧动作中的代码改为:

    a="动态文本框"

    测试影片,文本框中同样显示"动态文本框".

    运行时创建文本框

    运用TextField类的createTextField()方法可以在运行时创建文本框.格式为:

    createTextField(名称,深度,x坐标,y坐标,宽度,高度)

    深度:相当于层的概念,深度数字越大就越在上面.同一深度只能包含一个对象,如果在同一深度添加新的对象,那么新的对象会覆盖同一深度上原来的对象.关于深度的详细内容将在影片剪辑课程中介绍.

    x、y:创建的文本框的注册点,注册点位于文本框的左上角.

    :新建一flash文件,打开帧动作面板,输入:

    This.createTextField("my_txt",1,100,100,200,50);

    my_txt.border=true;

    my_txt.text="动态创建的文本框";

    测试影片,将看到一个文本框,文本内容是:"动态创建的文本框".  

       (显示不了.然再画个文本框,输入my_txt,又非200*50        老虎?)

    本例动态创建了一个文本框,然后设置了文本框的两个属性:

    border:设置文本框是否有边框

    text:设置文本框的内容.

    文本框还有很多属性,将在后续章节介绍.

  • ---------------------------------------------------------------------------------------------

    老虎搜集整理的例子:

    //动态创建一个文本框  下面的示例创建一个宽 300,高 100 的文本字段,其 x 坐标为 100,y坐标为100,该文本字段有边框,文本为红色并带下划线:
    //单纯文本:
    System.useCodepage = true;     //一个布尔值。当属性设置为 true 时,Flash Player 使用运行播放器的操作系统的传统代码页来解释外部文本文件。
    this.createTextField("my_txt", this.getNextHighestDepth(), 100, 100, 300, 100);
    //设置该文本框相关属性:
    my_txt.multiline = true;        //指示文本字段是否为多行文本字段。
    my_txt.wordWrap = true;       //一个布尔值,指示文本字段是否自动换行。
    my_txt.border = true;           //border:设置文本框是否有边框 .
    my_txt.borderColor = 0x000000;      //color 指示文本框边框的颜色。0x000000为黑色。
    my_txt.autoSize = "left";              //控制文本字段的自动大小调整和对齐。left为左对齐。没有该句则文本框直接显示300*100。
    var my_fmt:TextFormat = new TextFormat();        //TextFormat 类描述字符格式设置信息。使用 TextFormat 类可以为文本字段创建特定的文本格式。没有该句和最后一句,则文本颜色、下划线无法设置。
    my_fmt.color = 0xff0000;       //color 指示文本的颜色,0xff0000为红色。
    my_fmt.underline = true;        //underline 指示文本是否带有下划线。
    my_txt.text = "This is my first test field object text.";      //text:设置文本框的内容.
    my_txt.setTextFormat(my_fmt);        //setTextFormat() 方法更改应用于文本字段中单个字符、一段字符或整体文本的文本格式。

    //对于用createTextField()创建的文本框,当不需要使用的时候,可以用removeTextField()方法来删除。
    del_btn.onRelease=function(){
    my_txt.removeTextField();
    }

    ........该例注释为老虎所加,如有不妥,敬请老师指导.....................................

    mytext.setTextFormat(myFormat);

    可以设置的样式有:

    align 指示段落的对齐方式。

    blockIndent 指示块的缩进,以磅为单位。

    bold 指示文本是否为粗体。

    bullet 指示文本是否在带有项目符号的列表中。

    color 指示文本的颜色。

    font 指示带有文本格式的文本的字体名称。

    indent 指示从左边距到段落中第一个字符的缩进。

    italic 指示文本是否为斜体。

    leading 指示行与行之间的垂直间距量(称为前导)。

    leftMargin 以磅为单位指示段落的左边距。

    rightMargin 以磅为单位指示段落的右边距。

    size 指示文本的磅值。

    tabStops 指定 Tab 键的自定义停靠位。

    target 指示浏览器中显示超链接的窗口。

    underline 指示文本是否带有下划线。

    url 指示文本所链接到的 URL。

    ---------------老虎搜集整理的例子到此结束-----------------------------------------------------------------------------------

    删除文本框:

    对于用createTextField()创建的文本框可以用removeTextField()方法来删除.

    例:在舞台上放一按钮,并为其命名为:del_btn.

    然后在帧动作面板中输入:

    This.createTextField("my_txt",1,100,100,200,50);

    my_txt.border=true;

    my_txt.text="动态创建的文本框";

    del_btn.onRelease=function(){

    my_txt.removeTextField();

    }

    测试影片,将看到一个文本框,文本内容是:"动态创建的文本框".点击按钮时,文本框被删除

    (不行呀!删除不了??   老虎)            (见老虎搜集整理的例子:就可删除掉。只需要该例最后两句)

    练习:算术练习器

    本练习由程序出100以内的加减乘除题,由用户计算,再由程序判定计算是否正确.通过本练习可以实践各种文本框的应用,同时也可对前面各课介绍的基础知识进行综合应用,如函数,条件语句,数组,运算符等.下面来制作这个练习器:

    新建一flash文档:

    1.用文本工具在舞台上方居中画一文本框,打开属性面板,选择静态文本,设置好字体、大小、颜色等属性.在文本框中输入:"算术练习器".

    2.在稍下面一点再画一个文本框,类型为动态文本,设置其它属性.不要边框.该文本框用于显示算术题目,文字较多,且要显示两行,所以请选择"多行".将该文本框命名为:tm_txt.

    3.在下面再画一文本框,类型为输入文本.命名为da_txt.该文本用于用户输入答案.设置其它属性.点下边框按钮.需要注意的是,在属性面板右下角,有一"自动调整字距"选项框,切莫打钩.因为该文本框中输入的内容为数字,此项打钩后文本内容将变为字符,那么将会导至后续程序失败.所以请记住凡是需要参加计算的数字文本不能选择此项.

    4.新建两个按钮元件,标签分别为:"确定"、"下一题",将两个按钮放到舞台下方,注意应与第三个文本框之间间隔一定距离,因为我们还要在运行时创建一个文本框用于显示答题的结果.打开属性面板,将两个按钮分别命名为:qd_btn、xyt_btn.

    5.好了现在开始写代码:新建一层,命名为:action,打开帧动作面板

    首先声明三个变量用来存放两个参与计算的数字及答案.

    var a:Number;

    var b:Number;

    var jg:Number;

    下面开始出题,程序刚打开时首先应出好题目,做完一道题点击下一题时又要出一次题目,这就是说出题的代码将重复使用,请养成良好的习惯,将要重复使用的代码做成函数,以免重复输代码.我们也借此练习一下函数的声明及调用.接着写代码:

    function ct(){ //声明了一个叫ct的函数

    a=random(99)+1;//加1就避免了算数出现0的情况.

    b=random(99)+1;

    var ysfz:Array=new Array("+","-","*","/");//声明了一个数组用于存放运算符.

    var ysfs =random(4);//产生一个0一3的随机数用于提取数组ysfz中的运算符.

    var ysf=ysfz[ysfs];//提取了运算符.

    tm_txt.text="请计算:"+a+ysf+b+newline+"除法请去掉余数";//通过动态文本框将题目显示出来

    switch(ysfs){ //用一个条件语句计算结果

    case 0:

    jg=a+b;

    break;

    case 1:

    jg=a-b;

    break;

    case 2:

    jg=a*b;

    break;

    case 3:

    jg=int(a/b);

    break;

    }

    }

    ct();//调用ct()函数,题就出好了.

    接下来是点击”确定”按钮时,判断用户是否回答正确,并给出结论:

    qd_btn.onRelease = function(){

    createTextField("jg_txt",0,170,250,200,50);//在运行时创建了一个文本框,这里文本框的坐标就根据实际位置确定.

    if(da_txt.text ==jg){ //如果用户在输入文本中输入的数字等于题的结果

    jg_txt.text = "回答正确";//创建的文本框显示”回答正确”

    } else { //否则

    jg_txt.text = "回答不正确";//创建的文本框显示”回答不正确”

    }

    }

    最后是点击”下一题”按钮时,重新出题,输入文本框清空,删除运行时创建的文本:

    xyt_btn.onRelease=function(){

    da_txt.text="";//清空输入文本

    jg_txt.removeTextField();//删除运行时创建的文本

    ct();//调用ct()函数重新出题.

    }

    作业:制作算术练习器

    -------------------------------------------------------------------------------------------------------------------------------

    二. 文本框的属性

    上一节我们介绍了创建文本框,文本框创建后我们通过其属性和方法可以对文本框进行操作,本节将介绍文本框的属性设置

    属性:

    antiAliasType:用于此 TextField

    实例的消除锯齿类型。它有两个值:

    "normal":应用常规文本消除锯齿。

    "advanced":应用高级消除锯齿将增加文本的可读性。(此功能从 Flash Player 8 起可用)。高级消除锯齿可以高品质地呈现小尺寸的字体。它最适合具有大量小字号文本的应用程序。建议不要对大于 48 磅的字体使用高级消除锯齿。

    设置本属将使用消除锯齿的文本,它将使文本字段有更好的更清晰的显示效果,但所产生的swf文件较大。使用设备字体是指使用用户计算机上已安装的字体,它产生的swf文件最小,而将此属性设为:"advanced"时,产生的swf文件最大。如果制作有大量文本字的swf文件时,要控制文件的大小,请考量此项如何设置更好。

    :this. createTextField("mytext_txt",1,100,100,200,50);

    mytext_txt.text = "这是消除锯齿的文本";

    mytext_txt.antiAliasType = "advanced"

    this. createTextField("mytext1_txt",2,100,200,200,50);

    mytext1_txt.text = "这是没有消除锯齿的文本";

    测试影片,两个文本效果差不多哈

    autoSize:文本的自动大小缩放和对齐方式,可设为以下几个值:

    "none"或false:不自动缩放.

    "left"

    或 true,左边固定向右边缩放.

    "right",右边固定向左边缩放.

    "center",中间固定向两边缩放

    Background

    指定文本字段是否具有背景填充。如果为 true,则文本字段具有背景填充。如果为 false,则文本字段没有背景填充。

    backgroundColor

    文本字段背景的颜色。默认值是 0xFFFFFF(白色)。只有当文本字段有边框时,背景颜色才可见。

    border:

    指定文本字段是否具有边框。如果为 true,则文本字段具有边框。如果为 false,则文本字段没有边框。

    borderColor

    文本字段边框的颜色。默认值是 0x000000(黑色)。

    例:

    this. createTextField("mytext_txt",1,100,100,200,50);

    mytext_txt.text = "本例创建了一个文本框:"+"\r"+"运用上面个绍的属性,对文本框外观进行设置";

    mytext_txt.autoSize = "center" //文本框中间固定,向两边缩放.

    mytext_txt.background = true;//文本框有背景

    mytext_txt.backgroundColor=0xff0000;//文本框背景为红色

    mytext_txt.border = true;//文本框有边框

    mytext_txt.borderColor=0x1111d5;//文本框边框为蓝色

    测试影片,结果为:

    AS入门第六课:文本与字符 第一节-创建文本题 - 老虎 - 老虎的博客

    注:文本中”\r”为换行的意思

    embedFonts:

    指定是否使用嵌入字体轮廓进行呈现。一个布尔值,当它为 true 时,使用嵌入字体轮廓呈现文本字段。如果为 false,则使用设备字体呈现文本字段。

    如果将文本字段的 embedFonts 设置为 true,则必须通过应用于该文本字段的 TextFormat 对象的 font 属性,指定该文本的字体。如果库中不存在指定的字体(具有对应的链接实例名称),则将不显示文本。

    注:TextFormat对象将在后面介绍

    _height:文本框的高度

    _width:文本框的宽度

    multiline

    表示文本字段是否为多行文本字段。如果值为 true,则文本字段为多行文本字段;如果值为 false,则文本字段为单行文本字段。

    _name:文本字段的实例名称

    length:表示文本字段中的字符数

    password

    指定文本字段是否是密码文本字段。如果 password 的值为 true,则文本字段为密码文本字段,并使用星号替代实际字符来隐藏输入的字符。如果为 false,则文本字段不是密码文本字段。启用密码模式时,剪切和复制命令及其相应的键盘快捷方式不起作用。此安全机制可防止不良用户使用快捷键在无人看管的计算机上破译密码。

    例:

    this. createTextField("mytext_txt",1,100,100,200,50);

    mytext_txt.text = "12345";

    mytext_txt.border = true;

    mytext_txt.password = true;

    测试影片,结果为:

    AS入门第六课:文本与字符 第一节-创建文本题 - 老虎 - 老虎的博客

    文本框中只有星号,无法看到文本内容

    _rotation:

    文本字段距其原始方向的旋转程度. 使用设备字体的文本字段不支持旋转值。您必须使用嵌入字体才能对文本字段使用 _rotation

    selectable:

    一个布尔值,表示文本字段是否可选。值 true 表示文本可选。selectable

    属性控制文本字段是否可选,而不控制文本字段是否可编辑。动态文本字段即使不可编辑,它也可能是可选的。如果动态文本字段是不可选的,则您不能选择其中的文本。

    如果 selectable 设置为 false,则文本字段中的文本不响应来自鼠标或键盘的"选择"命令,并且不能使用"复制"命令复制文本。如果 selectable 设置为 true,则可以使用鼠标或键盘选择该文本字段中的文本。即使文本字段是动态文本字段而不是输入文本字段,您也可以用这种方式选择文本。可以使用"复制"命令复制文本。

    例:

    this.createTextField("mytext_txt",1,100,100,200,50);

    this.createTextField("mytext1_txt",2,100,200,200,50);

    mytext_txt.border = true;

    mytext1_txt.border = true;

    mytext1_txt.selectable=false;

    mytext_txt.text="这个文本内容可选";

    mytext1_txt.text = "这个文本内容不可选"

    测试影片,出现两个文本框,一个文本框的内容可以拉黑(可选),点右键有复制菜单项.而另一个则不能被拉黑,没有右键菜单项

    text:

    表示文本字段中的当前文本。行用回车符("\r",即 ASCII 13)分隔。

    textColor:

    表示文本字段中文本的颜色

    例:

    this.createTextField("mytext_txt",1,100,100,200,50);

    mytext_txt.border = true;

    mytext_txt.textColor=0xff0000;

    mytext_txt.text="这个文本是红色的";

    textHeight

    指示文本的高度,以像素为单位

    textWidth

    指示文本的宽度,以像素为单位

    type:

    指定文本字段的类型。共有两个值:"dynamic"(指定用户无法编辑的动态文本字段)和 "input"(指定输入文本字段)。

    _visible

    一个布尔值,表示文本字段是否可见。禁用不可见的文本字段(_visible 属性设置为 false)。

    wordWrap:

    一个布尔值,表示文本字段是否自动换行。如果 wordWrap 的值为 true,则该文本字段自动换行;如果值为 false,则该文本字段不自动换行

    _x

    一个整数,用来设置文本字段相对于父级影片剪辑的本地坐标的 x 坐标.注册点在左上角

    _y:

    文本字段相对于父级影片剪辑的本地坐标的 y 坐标。注册点在左上角

    _xscale:

    确定从文本字段注册点开始应用的文本字段的水平缩放比例,以百分比表示

    _yscale:

    从文本字段的注册点开始应用的文本字段的垂直缩放比例,以百分比表示

    关于文本滚动的属性设置:

    hscroll:表示当前水平滚动位置。如果 hscroll

    属性为 0,则不能水平滚动文本

    水平滚动的单位是像素,而垂直滚动的单位是行。水平滚动以像素计量是因为您通常使用的多数字体都是按比例隔开的;这意味着字符可以有不同的宽度。Flash 按行执行垂直滚动是因为用户通常希望看到一整行文本,而不是一行的局部。即使一行上有多种字体,行的高度也会调整到与使用的最大字体相适合。

    maxhscroll:表示 TextField.hscroll 的最大值

    例:

    this.createTextField("mytext_txt",1,100,100,100,20);

    mytext_txt.autoSize=false;

    mytext_txt.text="这是一个滚动文本的效果,我们可以看到文本在滚动.";

    onEnterFrame = function() {

    if(mytext_txt.hscroll < mytext_txt.maxhscroll){

    mytext_txt.hscroll ++;

    }else {

    mytext_txt.hscroll =1;

    }

    }

    测试影片,你将看到一个滚动文本。代码中用了一个onEnterFrame事件,这是每运行一帧就执行一次,这样就形成了一个无限的循环。

    scroll:

    文本在文本字段中的垂直位置。scroll 属性可用于将用户定向到长篇文章的特定段落,还可用于创建滚动文本字段。可以检索和修改此属性。水平滚动的单位是像素,而垂直滚动的单位是行。

    maxscroll:

    表示 TextField.scroll 的最大值。

    参考上例可以做出垂直方向滚动的文本。但却不能用onEnterFrame事件,为什么呢?因为scroll属性是以行为单位,如果每帧跳一行的话,那就太快了。你可以放一个按钮,让每点一次按钮,文本向上滚动行。这个留给大家自已练习吧。可以实现自动滚动吗?当然可以,留到本节课后练习来说。

    TextFormat类:

    上面主要介绍了文本的的一些属性,而文本内容的属性比如字体,颜色,对齐方式等就要借助TextFormat类来实现。使用 TextFormat 类可以为文本字段创建特定的文本格式。您可以将文本格式应用于静态文本字段和动态文本字段。必须使用构造函数 new TextFormat()

    创建 TextFormat 对象,然后设置其属性,再用文本框的setTextFormat()方法来使用这些属性。

    1.创建TextFormat对象:

    var myformat:TextFormat = new TextFormat();这就创建了一个叫myformat的TextFormat对象。

    2.设置TextFormat对象的属性:

    myformat.bold = true;设置了myformat的bold(粗体字)属性.

    3.文本框调用setTextFormat()方法:

    mytext_txt. setTextFormat(myformat);这样文本框就调用了myformat中的属性设置,即文本框的内容将以粗体字显示。

    例:

    var myformat:TextFormat = new TextFormat();

    myyformat.bold=true;this.createTextField("mytext_txt",1,100,100,100,20);

    mytext_txt.autoSize=true;mytext_txt.text="设置了粗体";

    mytext_txt.setTextFormat(myformat);

    测试影片,可以看到文本框中的文字是粗体的。 

    TextFormat对象的属性:

    align指示段落的对齐方式的字符串。您可以将此属性应用于静态文本和动态文本。下面的列表显示此属性的可能值:

    * "left" -- 段落为左对齐。

    * "center" -- 段落居中

    * "right" -- 段落为右对齐。

    * "justify" -- 段落为两端对齐。(Flash Player 8 中添加了此值。)

    默认值是 null,它指示该属性未定义。

    blockIndent:

    以磅为单位指示块缩进的数字。块缩进应用于整个文本块,即文本的所有行。而普通缩进 (TextFormat.indent) 只影响各段的第一行。如果此属性为 null,则 TextFormat 对象不指定块缩进。

    bold:

    一个布尔值,指示文本是否为粗体字。默认值是 null,它指示该属性未定义。如果值为 true,则文本为粗体字。

    color:指示文本的颜色。

    font:

    使用此文本格式的文本的字体名称,以字符串形式表示。

    indent:

    指示从左边距到段落中第一个字符的缩进的整数。正值指示普通缩进。您可以使用负值,但只可在左边距大于 0 时进行负缩进。若要将边距设置为大于 0,请使用 indent 属性或 TextFormat 对象的 blockIndent 属性。默认值是 null,它指示该属性未定义。

    italic一个布尔值,指示使用此文本格式的文本是否为斜体

    leading:一个整数,表示以像素为单位的行间垂直距离(称为"行距")。

    leftMargin段落的左边距,以磅为单位

    letterSpacing字间距

    rightMargin段落的右边距,以磅为单位。

    size文字的大小

    underline:一个布尔值,指示使用此文本格式的文本有下划线 (true) 还是没有下划线 (false)

    下面我们来做个练习:滚动文本的制作

    新建一flash文档,导入一图片,用为背影,居中放好

    新插入一层,命名为action.开始写代码:

    1、横向滚动:

    首先创建一个TextFormat对象,然后设置文本框要用到的属性.

    创建文本框,并设置其autoSize属性为false,不让其缩放大小.设置文本框的text属性,前后输入一定数量空格,以避免滚动时出现不连惯.

    用onEnterFrame事件实现滚动,方法参见上面例句

    2、纵向滚动:

    首先创建一个TextFormat对象,然后设置文本框要用到的属性.

    创建文本框,并设置其autoSize属性为false,不让其缩放大小.设置文本框的text属性,第一行前和最后一行后,插入一定数量”\r”,以避免滚动时出现不连惯.

    创建一函数,使文本滚动,方法参考横向滚动

    用:

    var 随便取个变量名 = setInterval(刚建的函数名,1000);

    实现滚动.这一句的意思是每隔1000毫秒调用一次函数,后面课程将详细介绍

    3、3D字效果

    原理是创建两个文本框,内容相同,字的颜色不同,文本框的位置略微错开2个象素左右.

    作业:制作滚动文本

    附完整代码:

    建议大家自已完成本练习,不要看这个代码,实在有困难时,只可参考这个代码.坚决反对直接复制本代码,那样就没意思了,对你学习AS一点好处都没有.

    var myformat:TextFormat = new TextFormat();

    myformat.bold = true;

    myformat.size = 30;

    myformat.color = 0xff0000;

    this.createTextField("mytext_txt",1,200,50,200,50);

    mytext_txt.autoSize=false;

    mytext_txt.text=(" 在花好月圆之夜,祝各位坛友中秋快乐!"); 

    mytext_txt.setTextFormat(myformat);

    onEnterFrame = function(){

    if(mytext_txt.hscroll<mytext_txt.maxhscroll){

    mytext_txt.hscroll ++;

    } else {

    mytext_txt.hscroll =1;

    }

    }

    var myformat1:TextFormat = new TextFormat();

    myformat1.size = 18;

    myformat1.color = 0xf4f44f;

    this.createTextField("mytext1_txt",2,100,150,150,150);

    mytext1_txt.autoSize=false;

    mytext1_txt.text="\r"+"\r"+"\r"+"\r"+"\r"+"\r"+"明月几时有?"+"\r"+"把酒问青天"+"\r"+"不知天上宫阙,"+"\r"+"今昔是何年";

    mytext1_txt.text +="\r"+"我欲乘风归去,"+"\r"+"又恐琼楼玉宇,"+"\r"+"高处不胜寒。"+"\r"+"起舞弄清影,"+"\r"+"何似在人间.";

    mytext1_txt.text +="\r"+"\r"+"转诸阁,"+"\r"+"低倚户,"+"\r"+"照无眠."+"\r"+"不应有恨,"+"\r"+"何事长向别时圆.";

    mytext1_txt.text +="\r"+"人生悲欢离合,"+"\r"+"月有阴晴圆缺,"+"\r"+"此事古难全."+"\r"+"但愿人长久,"+"\r"+"千里共婵娟."

    mytext1_txt.text +="\r"+"\r"+"\r"+"\r"+"\r"+"\r"+"\r"+"\r"

    mytext1_txt.setTextFormat(myformat1);

    function gd(){

    if(mytext1_txt.scroll<mytext1_txt.maxscroll){

    mytext1_txt.scroll ++;

    } else {

    mytext1_txt.scroll =1;

    }

    }

    var ksgd = setInterval(gd,1000);

    var myformat2:TextFormat = new TextFormat();

    myformat2.bold = true;

    myformat2.size = 30;

    myformat2.color = 0x988E81;

    this.createTextField("mytext2_txt",3,200,300,200,50);

    mytext2_txt.autoSize="center";

    mytext2_txt.text="花好月圆贺中秋";

    mytext2_txt.setTextFormat(myformat2);

    var myformat3:TextFormat = new TextFormat();

    myformat3.bold = true;

    myformat3.size = 30;

    myformat3.color = 0x430FBD;

    this.createTextField("mytext3_txt",4,202,300,200,50);

    mytext3_txt.autoSize="center";

    mytext3_txt.text="花好月圆贺中秋";

    mytext3_txt.setTextFormat(myformat3);

      ------------------------------------------------------------------------------------------------------------------------------

    文本框的事件

    onChanged事件在文本字段的内容发生更改时调用。在文本框中的内容发生改变时就会触发。比如在输入文本中输入或删除一个字符时都会触发这个事件。

    例:this.createTextField("mytext_txt",1,50,20,400,200);
    this.createTextField("myinputtext_txt",2,100,300,100,20);
    myinputtext_txt.autoSize = false;
    myinputtext_txt.border = true;
    myinputtext_txt.type = "input";
    var myformat:TextFormat = new TextFormat();
    myformat.bold=true;
    myformat.color=0xff0000;
    myformat.size=26;
    mytext_txt.autoSize=true;
    mytext_txt.wordWrap=true;
    myinputtext_txt.onChanged = function(){

    mytext_txt.text = myinputtext_txt.text;

    mytext_txt.setTextFormat(myformat);
    }
    这个例子,创建了两个文本框,其中一个是输入文本。分别设置了属性。然后用onChanged事件,在输入框中输入文本的同时,文本显示在别一文本框中。每输入一个字,输入文本内容就发生了改变,从而触发了onChanged事件,而执行将文本显示在另一文本框中的任务。

    onKillFocus 事件在文本字段失去键盘焦点时调用。文本框的焦点,就是说光标。当文本框失去光标时,就会触发onKillFocus事件。

    例:this.createTextField("mytext_txt",1,50,20,400,200);
    this.createTextField("myinputtext_txt",2,100,300,100,20);
    myinputtext_txt.autoSize = false;
    myinputtext_txt.border = true;
    myinputtext_txt.type = "input";
    var myformat:TextFormat = new TextFormat();
    myformat.bold=true;
    myformat.color=0xff0000;
    myformat.size=26;
    mytext_txt.autoSize=true;
    mytext_txt.wordWrap=true;
    myinputtext_txt.onChanged = function(){

    mytext_txt.text = myinputtext_txt.text;

    mytext_txt.setTextFormat(myformat);
    }
    myinputtext_txt.onKillFocus = function(){

    trace("输入框已失去光标,无法继续输入.");
    }
    本例还是上例的代码只是在后加了一个onKillFocus事件函数。运行时在输入框中输几个字后,点击显示文本的的文本框,这时输入文本将失去焦点,从而解发onKillFocus事件。出现失去光标的提示。

    onScroller 事件在某一个文本字段的 scroll 属性发生更改时调用。TextField.onScroller事件处理函数通常用于实现滚动条。滚动条通常有一个缩略图或其它指示器,显示文本字段中的当前水平或垂直滚动位置。使用鼠标和键盘可以浏览文本字段,这会导致滚动位置发生更改。如果由于用户交互而导致滚动条位置发生更改,滚动条代码需要获得通知,这就是使用 TextField.onScroller的目的。

    onSetFocus 事件在文本字段接收键盘焦点时调用。

    文本框的方法

    getFontList() 方法以数组的形式返回播放器的主机系统上的字体名称。(此方法不返回当前加载的 SWF 文件中所有字体的名称。)这些名称的类型为 String。此方法是全局 TextField 类的静态方法。在调用此方法时,不能指定文本字段实例。

    var font:Array = new Array();
    font = TextField.getFontList();
    trace(font);

    测试影片,你将看到,你的windows目录下fonts文件夹中的文件名称给列出来了。

    getDepth() 方法返回文本字段的深度。

    getNewTextFormat()方法返回一个 TextFormat 对象,该对象包含文本字段的文本格式对象的一个副本。

    getTextFormat()方法返回一个字符、一段字符或整个 TextField 对象的 TextFormat 对象。

    用法:my_textField.getTextFormat():返回一个 TextFormat 对象,该对象包含文本字段中所有文本的格式设置信息。

    my_textField.getTextFormat(开始处):返回一个 TextFormat 对象,该对象包含 开始处到结束时文本字段的文本格式的一个副本。

    my_textField.getTextFormat(开始处,结束处):返回一个TextFormat对象,该对象包含从 开始处 到 结束处 范围内文本的格式设置信息。

    removeTextField()方法删除文本字段。只能对使用createTextField() 创建的文本字段执行此操作。

    replaceSel()方法使用新的字符替换当前所选内容。使用当前默认字符格式和默认段落格式,在当前所选内容的所在位置插入文本。

    用法:my_textField.replaceSel(新字符);

    可以使用 replaceSel()
    方法插入和删除文本,而不破坏其余文本的字符和段落格式。
    必须使用 Selection.setFocus()
    将焦点放置在字段上才能发布此命令。

    replaceText()方法在指定的文本字段中,用新字符替换由 开始处 和 结束处 参数所指定的一段字符。

    用法:my_textField.replaceSel(开始处,结束处,新字符);

    setTextFormat()方法将 textFormat 参数指定的文本格式应用于文本字段中的某些文本或全部文本。textFormat
    必须是一个指定需要的文本格式更改的 TextFormat 对象

    用法:setTextFormat(开始处,结束处,textFormat对象);如果没有开始处和结束处,格式将运用于整个文本。

    ------------------------------------------------------------------------------------------------------------------------------------

     四 创建字符串

    字符串是String类的一个实例。它用于操作基元字符串值类型的方法和属性。

    创建字符串:在AS中可以用new来创建字符串对象:

    var mystring:String = new String();

    mystring = "我创建了一个字符串";
    创建字符串后,就可以操作其方法和属性了。

    length属性:字符串的字符数。因为所有字符串索引都是从零开始的,所以任何字符串 x
    的最后一个字符的索引都是 x.length – 1。
    例:var mystring:String = new String();

    mystring = "我创建了一个字符串";

    trace(mystring.length);
    测试时,我们可以看到输出是:9。

    方法:
    charAt() 方法:返回字符串中括号中指定的字符。
    :var mystring:String = new String();

    mystring = "我创建了一个字符串";

    a = mystring.charAt(8);

    trace(a);
    输出结果为:“串”。这里可以看出,字符串中最后一个字符的索引是字符串的长度(字符数)-1。
    concat()方法:这个方法可以连接两个字符串,产生一个新字符串,而原字符串不发生变化。
    :var mystring:String = new String();

    mystring = "我创建了一个字符串";

    var newstring:String = mystring.concat(",又连接了一段字符");

    trace(newstring);
    输出结果:"我创建了一个字符串,又连接了一段字符"。

    indexOf()方法这个方法可实现一个查找功能。

    indexOf(要查找的值,位置)它将从位置处搜索字符串,并返回找到的字符的位置。如果没有找到,则返回-1.如果没有指定位置,那么将从字符串开头开始查找。
    :var mystring:String = new String();

    mystring = "我创建了一个字符串";

    var a = mystring.indexOf("个");

    trace(a);
    输出结果:5。即在字符串中找到了“个”这个字符,并返回了它的位置5,即第6个字符。

    lastIndexOf()方法这也是查找功能,但它是从右向左查找,即从后面开始向前面查找。

    slice()方法该方法将从字符串中返回一个子字符串。

    slice(起始处,结束处)它将返回从起始处到结束处(但不包括该字符)的字符串。
    :var mystring:String = new String();

    mystring = "我创建了一个字符串";

    var a:String = mystring.slice(2,6);

    trace(a);
    测试结果:“建了一个”

    split()方法在指定的字符或字符串出现的所有位置断开 String 对象,将其拆分为子字符串,然后以数组形式返回子字符串。如果使用空字符串 ("") 作为分隔符,则该字符串中的每个字符都将作为一个元素放入到数组中。

    格式:split(分隔符,[个数]).个数是可选的,指返回的元素的个数。
    :var mystring:String = new String();

    mystring = "我创建了一个字符串";

    var a:Array= mystring.split("一");

    trace(a);
    测试结果:我创建了,个字符串
    :var mystring:String = new String();

    mystring = "我创建了一个字符串";

    var a:Array= mystring.split("");

    trace(a);
    测试结果:我,创,建,了,一,个,字,符,串

    substr()方法这也是返回子字符串的方法,与slice()方法相似,但它的第2个参数不是结束处而是字符个数。
    格式:substr(开始处,个数),从开始处返回个数那么多个字符的字符串。

    substring()方法返回一个字符串,该字符串由 开始处 和 结束处 参数指定的两点之间的字符组成。如果未指定结束处 参数,则子字符串的结尾就是该字符串的结尾。如果 开始处 的值等于结束处 的值,则该方法返回一个空字符串。如果 开始处 的值大于 结束处 的值,则在函数执行前两个参数将自动互换,且原始值不变。

    toLowerCase()方法返回此字符串的一个副本,其中所有大写的字符均转换为小写字符。原始字符串保持不变。

    toString()方法将字对象转换为字符串。

    toUpperCase()方法返回此字符串的一个副本,其中所有小写的字符均转换为大写字符。原始字符串保持不变。

    -----------------------------------------------------------------------------------------------------------------------------------------

     实例—打字游戏

    先看效果:

    现在开始制作:

    新建一flash文档。

    1.新建一个影片剪辑元件,命名为“爆炸”。这需要一个爆炸的效果,你可以找一个爆炸图片,也可以画一个,我这个是用PS做的。进入元件编辑窗口,将爆炸图片拖入,打散,居中放好。在第5帧插入关键帧。回到第一帧将图片缩到5象素。然后建立形状补间。打开库面板,在爆炸元件上,点右键,点击“连接”,为该元件输入标识符“bz”.

    导入一个爆炸声的音乐文件,在库中音乐文件上点右键-属性。取掉“使用导入品质”上的钩。压缩选择mp3.在库中右击该音乐元件,点连接,为该元件输入标识符“pzs”.

    回到爆炸元件编辑窗口,新建一层,在第3帧插入关键帧(这里是要导入爆炸声,在第几帧插入根据声音的长短来定,如果声音长那么就在第1帧就导入。)点右键,打开帧动作面板,输入:

    var bd:Sound = new Sound();

    bd.attachSound("pds");

    bd.start();

    第一句声音了一个声音对;第二句将库中的爆炸声音导入。第三句声音开始播放。

    在第5帧插入关键帧,在帧动作面板中输入:

    this.removeMovieClip(this);

    将爆炸元件移除。

    图:我用PS做的爆炸效果:(png)

    AS入门第六课:文本与字符 - 老虎 - 老虎的博客

    2.再建一个影片剪辑元件,取名为“大炮”.同样你可以找一张大炮的图片,也可以自已画一个,我这个是自已画的。注意将图形放到中心点(十字)稍上方,即十字点在大炮的后半部位。

    图:我画的大炮,不太好哈。注意十字的位置,大炮将以这一点作为旋转的基点。

    AS入门第六课:文本与字符 - 老虎 - 老虎的博客

    3.新建7个按钮,标签分别为:“设置”,“重玩”,“字母”,“中文”,“慢速”,“中速”,“快速”。

    4.可以选一个背景画片,同样可以找一个风景图(应有天空和地面),也可以画一个,我画了一个,又找了一张风景照片,结果还是认为风景照片好看些。当然你也可以不要背景图片。

    5.演员准备齐了,现在开始布置舞台。

    回到主场景。第一层“背景”在第2帧插入关键帧,将“设置”,“重玩”按钮从库中拖入,放到左上部。打开属性面板,分别将两个按钮命名为:“sz_btn”,”cw_btn”.在左边稍下边一点入一静态文本,内容为“命中率”,在它的下边放一动态文本,在属性面板中命名为“mzl_txt”;在它的下面放一静态文本,内容为“得分”,在它的下面,放一动态文本,在属性面板中命名为“df_txt”.在右半部画一矩形,然后在这个矩形上放一个静态文本,内容为“当前设置”。然后放两个动态文本,内容分别为:“字母”,“中速”。打开属性面板,将两个动态文本分别命名为:“yysz_txt”,”sdsz_txt”.将“字母”“中文”,“慢速”,“中速”,“快速”按钮拖入,放到矩形的右半部。在属性面板中分别命名为:“zm_btn”,”zw_btn”,”ms_btn”,”zs_btn”,”ks_btn”.如下图:

    AS入门第六课:文本与字符 - 老虎 - 老虎的博客

    在第3帧插入帧。

    新建一层:在第2帧插入关键帧,将风景图片拖入,调整大小,盖住右边的矩型鄣分: 将“大炮”元件从库中拖入,放到右边风景图的下方中间。在属性面板中命名为:”dp_mc”.

    AS入门第六课:文本与字符 - 老虎 - 老虎的博客

    6.好了,布置好了。现在来写代码。新建一层,命名为“action”,打开帧动作面板。

    首选准备好文字,将出现的文字有字母和中文两种,我们建两个字符串来存放文字。字母比较简单只有26个,所以第一句:

    var zm:String = “abcdefghijklmnopqrstuvwxyz”;

    第二句放中文,我找了一篇散文,将它存在字符串中,在散后最后加上0~9,这样也可以让用练习一下数字键。

    var zw:String = "这几天心里颇不宁静。…….”;

    zw+="0123456789";

    声明几变量,后面有用:

    var zs=0; //下落文字的总数

    var df=0; //击中文字的数量

    var lg = 1;//语言,用于后面由用户选择练习字母还是练习中文。

    var sd = 500;//速度,用于设置文字出现的速度。

    var wbformat:TextFormat=new TextFormat();//创建一个文本格式,用于设置下落的文本

    wbformat.bold=true;

    wbformat.size=22;

    在第二帧插入关键帧:这一帧将实现文字下落,击中和得分计数生等功能。

    stop();

    //首先创建一个输入文本用来接受用户输入文字:

    this.createTextField("sr_txt",31,350,350,30,20);

    sr_txt.type="input";

    sr_txt.border=true;

    sr_txt.text="开始";

    //创建文本位置坐标要根据实际的位置来确定,使文本出现在大炮的下方。

    下面用一个函数来实现出现字母的功能:

    var i=0;

    function cwb(wbl){//注意这里声明的函数带了一个参数wbl,这个参数用于文本是字母还是中文。

    if(i<10){ //这一句就让屏幕上出现的文字只有10个。

    var wbx = 150+random(370); //产生一个150到520的随机数,用于设置文字的x属性。

    createTextField("wb_txt"+i,i,200,20,30,30);

    wb = eval("wb_txt"+i);

    var zmwz = random(wbl.length);//产生一个从0~文本字符串(第1帧创建那两个)的长度之间的随机数,用于从字符串中随机抽取字符。

    wb.text = wbl.charAt(zmwz);//设置文本的内容为字符串中的随机字符

    wb._x=wbx;

    wb.setTextFormat(wbformat);//将第1帧创建的文本格式应用于该文本。

    zs++;//文本出现后,文字总数加1

    }else {

    i=0;

    }

    i++;

    }

    //下面通过onEnterFrame事件,让出现的文本不断往下落:

    onEnterFrame = function() {

    for (k=0;k<10;k++){

    wb= eval("wb_txt"+k);

    wb._y += 2;

    }

    };

    //接下来就是启动游戏了,我们将启动按钮设在输入文本的onSetFocus事件上,也就是说,当我们一点击“开始”(输入文本获得焦点),游戏启动。

    var szm;//这变量用来调用上面的出现字的函数。

    sr_txt.onSetFocus = function(){

    var jsid = setTimeout(js,60000);//首先设置一个时间限制,就是说60000毫秒(1分钟)调用函数js,这个函数将停止游戏并统计得分。

    if(lg==1){//如果变量lg等于1

    szm = setInterval(cwb,sd,zm); //那么每隔变量sd那么长的时间,调用一次出文字的函数cwb,并且使用字母(zm)字符串)

    }else {//否则

    szm = setInterval(cwb,sd,zw);//那么每隔变量sd那么长的时间,调用一次出文字的函数cwb,并且使用中文(zw)字符串).所以我们只虽改变变量lg的值,就可以选择出字母还是出中文了。

    }

    sr_txt.text="";//将输入文本框清空,准备输入。

    }

    function js(){//这是声明了一个用于结束游戏的函数。

    clearInterval(szm);//清除setInterval的调用,文字不再出现。

    mzl_txt.text = int((df/zs)*100)+"%";//计算命中率,并显示。

    }

    //下面通过输入文本的onChanged事件,实现炮轰文字的效果。

    sr_txt.onChanged = function(){//当输入文本内容发生变化时,即我们每输入一个文字时

    for(var j=0;j<10;j++){

    cxdwb =eval("wb_txt"+j);

    if(sr_txt.text == cxdwb.text){//如果输入的文字和出现的文字之一一样。

    attachMovie("bz","bz_mc",21);//那么从库中加载爆炸元件,这里的深度我用了21,是为了避免与出现的文字文本冲突,当然11也就行了,因为文字文本只有10个。

    bz_mc._x=cxdwb._x;

    bz_mc._y=cxdwb._y+10;//两句设置爆炸元的位置和文字文本的位置一样,使其在文字处爆炸。

    dx = cxdwb._x - dp_mc._x;

    dy = cxdwb._y - dp_mc._y;

    dz = Math.atan2(dy,dx)*180/Math.PI;

    dp_mc._rotation = dz+90;//上面是通过三角函数使大炮的方向转为文字文本的方向。

    cxdwb.removeTextField();//爆炸后将文字文本删除,即炸掉了。

    df++;//击中后得分加1

    df_txt.text=df;//显示得分

    }

    }

    sr_txt.text="";//清空输入文本,准备下一次输入。

    }

    //游戏的功能就完成了,现在应提供一个重玩按钮,让用户可以重新开始游戏。

    cw_btn.onRelease= function(){//当重玩按钮被点击时

    if(lg==1){

    szm = setInterval(cwb,sd,zm);

    }else {

    szm = setInterval(cwb,sd,zw);

    }

    sr_txt.text="";

    setTimeout(js,60000);

    df=0;

    zs=0;

    mzl_txt.text="";

    }

    //下面是设置按钮,进入设置页面。

    sz_btn.onRelease =function(){

    gotoAndStop(3);

    }

    在第3帧插入关键帧,将在这一帧设置文字语言,速度等。

    进入设置页面后,首先停止游戏:

    clearInterval(szm);

    zs=0;

    df=0;

    //下面是几个设置按钮上的代码:

    zm_btn.onRelease = function(){

    lg=1;//让娈量lg等于1,这样文字将会是字母

    yysz_txt.text="字母";

    }

    zw_btn.onRelease = function(){

    lg=2;//让娈量lg不等于1,这样文字将会是中文

    yysz_txt.text="中文";

    }

    ms_btn.onRelease= function(){

    sd = 1000;//设置sd为1000毫秒,即每1000毫秒出一个文字,下同

    sdsz_txt.text="慢速";

    }

    zs_btn.onRelease=function(){

    sd = 500;

    sdsz_txt.text="中速";

    }

    ks_btn.onRelease=function(){

    sd =200;

    sdsz_txt.text="快速";

    }

    qd_btn.onRelease=function(){//这是确定按钮上的代码,点击确定按钮后,退出设置窗口,返回游戏窗口,继续游戏。

    gotoAndStop(2);

    }

    好,完工,祝你成功!

  •   评论这张
     
    阅读(869)| 评论(0)

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2018