下面我们就来学习Flash MX 2004中激动人心的新特性吧。在每个实例的讲解都分为涉及特性、制作过程、实际用途三个部分。
实例一、Accessible Applications
一、涉及特性
这个实例主要涉及新增组件的应用,以及对组件的编程。在2004中,组件分为Data、Media、UI三大类别。让人惊喜的是在UI类别中差不多已经包括了制作WEB应用所需要的所有组件,以后用Flash制作网页再也不麻烦了。而且通过编程可以对组件进行灵活、全面的控制。
二、制作过程
1. 按“Ctrl + F8”新建一个Symbol,类型为“Movie Clip”,命名为“display”。将一个“Label”组件拖到此Symbol的场景中,命名为“label”。将此Symbol拖到场景中,命名为“display”。
2. 将一个“List”组件拖到场景中,命名为“colorList”,在“label”属性中增加内容“Green”、“Blue”、“Brown”、“Red”、“Orange”、“Purple”。
3. 将两个“Text Input”组件拖到场景中,分别命名为“usernameInput” 和“passwordInput”,并设置第二个的属性中的“password”为true。
4. 将一个“Button”组件拖到场景中,命名为“submitButton”,设置“Label”属性为“Submit”。
5. 将两个“Radio Button”组件拖到场景中,分别命名为“radio_single”和“radio_multiple”,设置“Label”属性为“Single Selection”和“Multiple Selection”。
6. 将四个“Label”组件拖到场景中,分别命名为“caption”、“username_label”、“password_label”、“select_label”。分别设置“Text”属性为“Please enter your name”、“First Name:”、“Last Name:”、“Please choose an item:”。
7. 按“Ctrl + F8”新建一个Symbol,类型为“Movie Clip”,命名为“arrow_mc”。在此Symbol的场景中绘制一个箭头。将此Symbol拖到场景中,命名为“arrow_mc”。调整场景中的Symbol的布局如图所示。
8. 在主场景的时间轴上增加一个层,命名为“Action”,在此层的Action面板上增加代码如下:
//注释1
/* Copyright 2003 Macromedia, Inc. All rights reserved.
The following is Sample Code and is subject to all restrictions
on such code as contained in the End User License Agreement
accompanying this product.
*/
//注释2
display.onEnterFrame = function () {
if (Selection.getFocus() != null) {
var mcfocus:MovieClip;
var mcloc:Object = {x:0, y:0};
// Get the object that's in focus
mcfocus = eval(Selection.getFocus());
// Set the label
this.label.text = mcfocus;
// Get the location of the object in global coordinates
mcloc = {x:mcfocus._x, y:mcfocus._y};
mcfocus._parent.localToGlobal(mcloc);
//注释3
// Move the arrow to point to it
this._parent.arrow_mc._x = mcloc.x;
this._parent.arrow_mc._y = mcloc.y;
} else {
//注释4
label.text = "There is no object in focus.";
this._parent.arrow_mc._x = 0;
this._parent.arrow_mc._y = 0;
}
}
//注释5
function onClick (evt) {
if (evt.target.selectedRadio == radio_single) {
colorList.multipleSelection = false;
} else {
colorList.multipleSelection = true;
}
}
//注释6
radioGroup.addEventListener("click", onClick);
radio_single.selected = true;
2004中的Action跟MX的Action有很大的区别,所以尽量详细的解释。
注释1:是版权信息,实例的来源是在Flash MX 2004的帮助文件中,所以保留这样的版权信息。
注释2:这个函数是根据鼠标选定的组件来更改在Display中显示的内容。
注释3:将箭头移动到鼠标选定的组件附近。
注释4:鼠标没有选定如何组件,将箭头放在左上角。
注释5:是Radio Button的侦听函数,根据选定的Radio Button设置List组件中的属性。
注释6:为两个Radio Button组件增加“click”的事件侦听,侦听函数为“OnClick”,并设置默认选择的Radio Button为单选。
三、实际用途
这个实例主要涉及的是UI组件和对组件的编程。UI组件的用途主要是在WEB方面,比如在用Flash制作网页中的表单时,丰富的组件和灵活的控制会让工作变得非常轻松。而且也提供了一个组件应用的思路:不单单可以将常用的东西封装成组件,也可以通过编程更灵活地控制组件。
实例二、Behaviors Scrapbook
一、涉及特性
此实例涉及的特性主要有两个:读取图片和设置Symbol的层次。不算是新增加的特性,但在性能方面的改进还是比较大的。
二、制作过程
1. 按“Ctrl + F8”新建一个Symbol,类型为“Movie Clip”,命名为“photo”,在此Symbol中绘制一个黑色的长方形。
2. 按“Ctrl + F8”新建一个Symbol,类型为“Movie Clip”,命名为“snapshot”,在此Symbol中绘制一个灰色的长方形。将Symbol “photo”拖到此Symbol中,调整其位置,并命名为“photo”。
3. 将Symbol “snapshot”拖五次到场景中,命名为“snapshot1”、“snapshot2”、“snapshot3”、“snapshot4”、“snapshot5”。分别在每一个“snapshot”的Action面板上增加语句如下:
on (press) {
//注释1
startDrag(this);
//注释2
mx.behaviors.DepthControl.bringToFront(this);
}
on (release) {
//注释3
stopDrag();
}
注释1:当鼠标按下的时候,拖动图片。
注释2:设置鼠标所在的图片为最前端。
注释3:当鼠标松开的时候,停止拖动图片。
4. 在主场景的时间轴上增加一个层,命名为“Action”,在此层的Action面板上增加代码如下:
/* Copyright 2003 Macromedia, Inc. All rights reserved.
The following is Sample Coe and is subject to all restrictions
on such code as contained in the End User License Agreement
accompanying this product.
*/
//注释1
this.snapshot1.photo.loadMovie("image1.jpg");
this.snapshot2.photo.loadMovie("image2.jpg");
this.snapshot3.photo.loadMovie("image3.jpg");
this.snapshot4.photo.loadMovie("image4.jpg");
this.snapshot5.photo.loadMovie("image5.jpg");
注释1:分别从Flash所在的文件夹中读取相应的图片出来。
5. 保存此Flash文档,将5张图片放在此Flash所在的文件夹中。注意图片的命名要跟第4步中的图片名一样。
三、实际用途
读取图片的功能其实在Flash MX中已经有了。不过从图片的读取速度跟显示效果来看,改进还是不小的。以后在用Flash制作图片浏览器时,可以先读取图片的文件名,再动态读取所在文件夹中的图片。
实例三、Customizing Context Menu
一、涉及特性
这个实例反映了Flash MX 2004在编程方面的重大改进。其中包括了as文件的应用,系统的_global.$clipboard变量的使用,ContextMenu(menufun) 函数的调用,ContextMenuItem()函数的调用,已经MovieClip.prototype.menu变量的使用。通过这几个函数和变量的操作,就可以轻松地操作Flash Player中的菜单了。
二、制作过程
1、新建一个Action Script File,命名为“ClipBoard.as”,内容如下:
/* Copyright 2003 Macromedia, Inc. All rights reserved.
The following is Sample Code and is subject to all restrictions
on such code as contained in the End User License Agreement
accompanying this product.
*/
class ClipBoard extends Object{ //注释1
static var $contents:Object; //注释2
static var $operation:String; //注释3
function ClipBoard() {} //注释4
static public function cut(obj) { //注释5
obj._alpha = 50; //注释6
$contents = obj; //注释7
$operation = "cut"; //注释8
}
static public function copy(obj) { //注释9
$contents = obj;
$operation = "copy";
}
static public function paste() { //注释10
if ($operation == "cut") { //注释11
$contents._x = _root._xmouse; //注释12
$contents._y = _root._ymouse;
$contents._alpha = 100; //注释13
$contents = undefined; //注释14
$operation = ""; //注释15
} else if ($operation == "copy") { //注释16
var newdepth = $contents._parent.getNextHighestDepth(); //注释17
var newname = $contents._name + newdepth; //注释18
$contents.duplicateMovieClip(newname, newdepth); //注释19
$contents._parent[newname]._x = _root._xmouse; //注释20
$contents._parent[newname]._y = _root._ymouse;
$contents._alpha = 100;
$contents._parent[newname]._alpha = 100;
} else {
return; //注释21
}
}
public function isEmpty():Boolean { //注释22
if ($contents != undefined) { //注释23
return false;
} else {
return true;
}
}
public function handleMenuCommand(obj, item):Void { //注释24
switch (item.caption) { //注释25
case "Cut object": //注释26
cut(obj);
break;
case "Copy object": //注释27
copy(obj);
break;
case "Paste object": //注释28
paste();
break;
}
}
}
本实例有比较多的编程知识,刚接触会有无从下手的感觉,下面来详细讲解一下涉及的东西。
注释1:class的意思是定义一个类,extends是表示所定义的类的基类是Object。这个涉及到编程的面向对象,可能比较难懂,可以把Object看成是所定义的类的父类,父类具有的方法和属性,在子类中都是有的。
注释2:定义一个变量contents,类型为Object。Flash MX 2004中都是这样定义变量的。在此处定义的变量,在整个类中都是可以用的。
注释3:定义一个变量operation,类型为String。
注释4:这是类的构造函数,所谓的构造函数就是当实例化这个类的时候所调用的函数。比如本类的实例化可以是这样的:ClipBoard cb = new ClipBoard();
注释5:定义一个cut函数,传入的参数是obj,它的调用范围是public,也即是任何类都可以调用。
注释6:设置传入的obj的alpha属性为50。
注释7:设置注释2中所定义的变量的值为obj。
注释8:设置注释3所定义的变量的值为“cut”。
注释9:定义一个copy函数,传入的参数是obj,调用范围是public。
注释10:定义一个paste函数,没有传入的参数,调用范围是public。
注释11:判断所定义的operation的值是否为“cut”。
注释12:设置contents的xy坐标为鼠标的xy坐标。
注释13:设置contents的alpha为100。
注释14:利用完contents的值后,将contents的值重新设置为undefined。
注释15:将operation的值清空。
注释16:判断所定义的operation的值是否为“copy”。
注释17:定义一个变量newdepth,设置它的值为类中所定义的contents的深度。
注释18:定义一个变量newname,设置它的值为contents的实例名加上所在的深度。
注释19:复制一个Movie Clip,参数是newdepth和newname。这就实现了复制的功能。
注释20:设置所复制的Movie Clip的位置跟aplha。
注释21:如果operation不是“cut”也不是“copy”的话,直接返回。
注释22:定义一个函数isEmpty(),返回的类型为Boolean,调用的范围为public。
注释23:根据contents的值做相应的操作。
注释24:定义一个函数handleMenuCommand,返回为空,调用范围是public。
注释25:根据参数item的caption来做相应的操作,switch的功能跟多个if判断差不多,但switch适用在判断的条件可能很多的情况下。
注释26:如果caption的值是“Cut object”,调用cut (obj)函数。
注释27:如果caption的值是“Copy object”,调用copy (obj)函数。
注释28:如果caption的值是“Paste object”,调用paste(obj)函数。
2、新建一个fla文件,保存在跟第一步所创建的ClipBoard.as在同一个目录下面。
3、按“Ctrl + F8”创建一个新的Movie Clip,命名为“square”,在此Movie Clip中用矩形工具绘制一个矩形。
4、将第三步中创建的Movie Clip“square”拖到场景中,在它的Action面板上添加如下的Action Script:
on (release) { //注释1
stopDrag();
}
on (press) { //注释2
startDrag(this);
mx.behaviors.DepthControl.bringToFront(this);
}
注释1:当松开鼠标的时候,停止拖动对象。
注释2:当按下鼠标的时候,开始拖动对象,并将对象设置在最前面一层。
5、在主场景的Time Line中增加一个Layer,命名为“Action”,在此层的Action面板上添加如下的Action Scipt:
/* Copyright 2003 Macromedia, Inc. All rights reserved.
The following is Sample Code and is subject to all restrictions
on such code as contained in the End User License Agreement
accompanying this product.
*/
_global.$clipboard = new ClipBoard(); //注释1
function menuCallback (obj, menuObj) { //注释2
var empty:Boolean = _global.$clipboard.isEmpty(); //注释3
menuObj.customItems = []; //注释4
if ((obj instanceof MovieClip) && (obj != _level0)) { //注释5
menuObj.customItems.push(cutItem); //注释6
menuObj.customItems.push(copyItem);
if (!empty) { //注释7
menuObj.customItems.push(pasteItem);
}
} else if (obj == _level0 && !empty) { //注释8
menuObj.customItems.push(pasteItem);
}
}
var myMenu = new ContextMenu(menuCallback); //注释9
//注释10
var cutItem = new ContextMenuItem("Cut object", _global.$clipboard.handleMenuCommand);
//注释11
var copyItem = new ContextMenuItem("Copy object", _global.$clipboard.handleMenuCommand);
//注释12
var pasteItem = new ContextMenuItem("Paste object", _global.$clipboard.handleMenuCommand);
//注释13
MovieClip.prototype.menu = myMenu;
注释1:这里就是刚刚所定义的ClipBoard ()的实例化,不过_global.$clipboard是系统已经有的了,所以可以直接用。
注释2:定义一个函数menuCallback,在创建菜单的时候用。
注释3:定义一个Boolean 类型的变量empty,它的值是调用函数_global.$clipboard.isEmpty()后所返回的值。
注释4:将menuObj的customItems设置为空数组。
注释5:判断obj所具有的属性。
注释6:将“cut”和“copy”添加到菜单中。
注释7:如果empty为假的话(也就是已经有cut或copy操作),将paste添加到菜单中。
注释8:如果鼠标没有选定对象的话,只将paste添加到菜单中。
注释9:实例化一个对象myMenu,其中构造函数调用了menuCallback函数。
注释10:实例化一个对象cutItem,这是一个子菜单,显示的内容为“Cut object”。
注释11:实例化一个对象copyItem,这是一个子菜单,显示的内容为“Copy object”。
注释12:实例化一个对象pasteItem,这是一个子菜单,显示的内容为“Paste object”。
注释13:将所定义的myMenu赋给系统。
三、实际用途
这个实例不单单为操作Flash Player的菜单提供了一种方法,也展示了怎么利用as文件来编程。了解清楚细节,对掌握Flash MX 2004的编程很有用。
实例四、Device Font Masking
一、涉及特性
本实例主要涉及遮照效果的制作和Scroll Pane组件的利用,都是一些有趣的特性,跟之前在Flash MX中的制作思路有比较大的不同。初初一看,文本内容都在图库当中,但让人迷惑的是在场景中会显示文本的内容。这就涉及到Scroll Pane组件的属性了。
二、制作过程
1、按“Ctrl + F8”新建一个Clip,命名为“textClip”,类型为Movie Clip,选取“Export for Action Script”(这个就是文本内容不在场景中,但可以显示在场景中的秘密了),在Identifier中输入“textClip”。在此Clip的场景中用文本工具输入比较多的文本,以便在最后结果中可以明显地看到效果。
2、按“Ctrl + F8”新建一个Clip,命名为“Frame”,类型为Movie Clip,用矩形工具绘制一个正方形边框。
3、按“Ctrl + F8”新建一个Clip,命名为“mask”,类型为Movie Clip,用矩形工具绘制一个与第二步中的大小差不多的正方形边框,并用填充工具填充为黑色。
4、按“Ctrl + F8”新建一个Clip,命名为“maskClip”,类型为Movie Clip,选取“Export for Action Script”,在Identifier中输入“maskClip”。
5、在maskClip中,在Time Line中新建一个层,命名为“mask”,将图库中的Frame 拖到此层中,在属性面板上命名为“box”。在“mask”层上面再建一个层,命名为“frame”,将图库中的mask拖到此层,在属性面板上命名为“frame”。在“frame”层上面再建一个层,命名为“actions”,在它的action面板上添加下面的语句:
textClip.setMask(box); // 注释1
this.onEnterFrame = function () { // 注释2
box._x = _root._xmouse - this._parent._x; // 注释3
box._y = _root._ymouse - this._parent._y;
frame._x = _root._xmouse - this._parent._x;
frame._y = _root._ymouse - this._parent._y;
}
注释1:将在场景中的box Clip设置为textClip的遮照。从这里也可以看出,现在可以直接在Action Script中创建遮照了。
注释2:设置函数,当进入此Movie Clip帧的时候,触发此函数。
注释3:设置遮照用的box的位置跟随鼠标移动,frame的位置也跟随移动。
6、回到主场景中,将两个Radio Button组件拖到场景中,将其中一个设置参数如下:命名为“rComponents”,data的值为“component”,“Group Name”为radioGroup,“label”为Masking with Components。将另一个设置如下:命名为“rGraphics”,data的值为“graphic”,“Group Name”为radioGroup,“label”为Masking with Graphics。
7、将一个Scroll Pane组件拖到场景中,将其参数设置如下:命名为“spMasking”,contentPath为“textClip”,hLineScrollSize为5,hPageScrollSize为20,hScrollPolicy为auto。ScrollDarg为false,vLineScrollSize为5,vPageScrollSize为20,vScrollPolicy为auto。
8、在Time Line中新建一个层,命名为“action”,在它的Action面板上增加下面的语句:
/* Copyright 2003 Macromedia, Inc. All rights reserved.
The following is Sample Code and is subject to all restrictions
on such code as contained in the End User License Agreement
accompanying this product.
*/
function switchExample (evt) { //注释1
var choice = evt.target.selectedRadio.data; //注释2
if (choice == "component") { //注释3
spMasking.contentPath = "textClip"; //注释4
spMasking.hScrollPolicy = "on"; //注释5
spMasking.vScrollPolicy = "on";
} else if (choice == "graphic") { //注释6
spMasking.contentPath = "maskClip"; //注释7
spMasking.hScrollPolicy = "off";
spMasking.vScrollPolicy = "off";
}
}
radioGroup.addEventListener("click", switchExample); //注释8
rComponents.selected = true; //注释9
来解释一下上面的代码:
注释1: 定义一个函数,参数为evt。
注释2: 定义一个变量,它的值是场景中的所选择的radio的值。
注释3: 如果选取的radio的值是component,则执行下面的语句。
注释4: 将场景中的Scroll Pane的contentPath设置为“textClip”,textClip是在图库中的,这个是Scroll Pane的特性。
注释5:设置Scroll Pane的滚动条为显示。
注释6:如果选取的radio的值是graphic,则执行下面的语句。
注释7:将场景中的Scroll Pane的contentPath设置为“maskClip”,maskClip是在图库中的一个遮照效果。
注释8:为场景中的两个Radio添加监听函数,当点击的时候触发。
注释9:默认选择的Radio为rComponents。
三、实际用途
本实例的用途广泛,可以直接在Scroll Pane中放置Clip,Graphic,swf文件等等,用Action Script控制起来也比较方便。所以可以制作文本框,图片框,也可以做Flash movie的播放框,而且是带滚动条的喔。
实例五、News Reader
一、涉及特性
本实例主要涉及数据绑定和组件的编程。数据绑定是在Flash MX 2004中才有的新功能,据称不用编程,只需设置几个组件的属性,就可以实现与服务器端的数据交互功能,也算是一大突破了。另外,由于在实例中没有提供相应的xml文件,所有字段都要手工输入,所以本实例的制作过程显得有些繁琐,请在制作过程中仔细检查每一个字段。
二、制作过程
1、从组件面板中拖一个List组件到场景中,命名为“articles”,设置“multipleSelection”为false,“rowHight”为20。
2、从组件面板中拖一个TextArea组件到场景中,命名为“title”,各种参数设置不变。
3、从组件面板中拖一个Label组件到场景中,命名为“author”,设置“text”为空。
4、从组件面板中拖两个TextArea组件到场景中,分别命名为“desc”和“link”,都设置“text”为空。
5、从组件面板中拖一个XMLConnector组件到场景中,命名为“feed”,设置参数如下:“URL”为“http://www.macromedia.com/go/devnet_rss”,“direction”为receive。
6、用文本工具在场景中输入几处文字,此时的效果如图1所示。
7、选取“feed”组件,选取“Component Inspector”中的Schema面板,在results字段下面增加如下的子字段:field name为RDF,data type为object,storage type为complex。
8、在RDF字段下面增加如下的子字段:A、field name为xmlns,data type为string,storage type为attribute;B、field name为dc,data type为string,storage type为attribute;C、field name为rdf,data type为string,storage type为attribute;D、fieldname为channel,data type为object,storage type为Complex;E、field name为item,data type为Array,storage type为array。
9、在Channel字段下面增加如下的子字段:A、field name为about,data type为string,storage type为attribute;B、field name为title,data type为string,storage type为simple;C、field name为link,data type为string,storage type为simple;D、field name为description,data type为string,storage type为simple;E、field name为date,data type为string,storage type为simple;F、field name为language,data type为string,storage type为simple;G、field name为items,data type为object,storage type为complex。
10、在Channel字段的items子字段下面增加子字段:field name为seq,data type为object,storage type为complex;在seq字段下面增加子字段:field name为li,data type为Array,storage type为array;在li字段下面增加子字段:field name为[n],data type为int,storage type为simple;在[n]字段下面增加子字段:field name为resource,data type为string,storage type为attribute。
11、回到RDF字段下面,在item字段下面增加如下子字段:field name为[n],data type为object,storage type为complex;在[n]字段下面增加如下的子字段:A、field name为about,data type为string,storage type为attribute;B、field name为title,data type为string,storage type为simple;C、field name为link,data type为string,storage type为simple;D、field name为description,data type为string,storage type为simple;E、field name为creator,data type为string,storage type为simple;F、field name为subject,data type为string,storage type为simple;G、field name为date,data type为string,storage type为simple;H、field name为type,data type为string,storage type为simple。此时的Schema面板如图2所示。
12、选取“feed”组件,选取“Component Inspector”中的Bindings面板,点击“Add Bindings”按钮,添加一个“results.RDF.item”字段,点击“Bound to”按钮,在弹出的对话框中选取“List”,设置“formatter”为“Rearrange Field”,设置“formatter option”为“label='< creator>: < title>'”。
13、同样在“feed”的Bingdings面板,点击“Add Bindings”按钮,添加一个“results.RDF.item.[n].title”字段,点击“Bound to”按钮,在弹出的对话框中选取“Text Area< title>”,设置“Index of item”为articles : selected Index。
14、点击“Add Bindings”按钮,添加一个“results.RDF.item.[n].link”字段,点击“Bound to”按钮,在弹出的对话框中选取“Text Area< link>”,设置“Index of item”为articles : selected Index。
15、点击“Add Bindings”按钮,添加一个“results.RDF.item.[n].creator”字段,点击“Bound to”按钮,在弹出的对话框中选取“Text< author>”,设置“Index of item”为articles : selected Index。
16、点击“Add Bindings”按钮,添加一个“results.RDF.item.[n].description”字段,点击“Bound to”按钮,在弹出的对话框中选取“Text Area< desc>”,设置“Index of item”为articles : selected Index。此时的Bindings面板如图3所示。
17、在Time Line中增加一层,命名为Action,在此层的Action面板上增加下面的语句:
/* Copyright 2003 Macromedia, Inc. All rights reserved.
The following is Sample Code and is subject to all restrictions
on such code as contained in the End User License Agreement
accompanying this product.
*/
function bindingExecuted() {
articles.selectedIndex = 0;
articles.refreshDestinations();
}
articles.addEventListener("bindingExecuted", this);
feed.trigger();
上面这些语句是为articles组件增加侦听鼠标动作的语句,让feed开始通讯。
三、实际用途
本实例主要涉及的是数据绑定功能,用途相当广泛,主要用来与服务器端的数据交互。以前相对繁琐的编程实现,现在只要设定几个组件的属性即可实现相应的功能。注意本实例中只涉及在Flash端的实现,没有涉及在服务器端的实现。
另外,7-11步可以通过导入一个xml文件来实现,但系统提供的帮助文件中没有相应的xml文件,只能手工输入,因此显得有点复杂。
实例六、Text Enhancements
一、涉及特性
在实例中,主要涉及在Flash MX 2004中引用和显示外部的css文件和html文件。这些都是在Flash MX 2004中才有的新特性,应用也非常方便。本实例在Flash MX 2004中的操作非常简单,不过这正从侧面反映了它的功能强大。
二、制作过程
1、建立一个文件,命名为sample.css。其内容如下:
headline {
font-family: Arial,Helvetica,sans-serif;
font-size: 16px;
font-weight: bold;
display: block;
}
subheadline {
font-family: Arial,Helvetica,sans-serif;
font-size: 13px;
font-weight: bold;
display: block;
}
mainBody {
font-family: Arial,Helvetica,sans-serif;
font-size: 10px;
display: block;
}
biline {
font-family: Arial,Helvetica,sans-serif;
font-size: 11px;
font-style: italic;
display: inline;
}
A {
font-family: Arial,Helvetica,sans-serif;
color:cccccc;
font-size: 10px;
display: inline;
text-decoration:underline;
}
上面的css文件中,中括号里面的是对应的属性。比如font-family是字符集,font-size是字体大小,display是字体的显示方式,等等。只要有简单的网页制作知识就应该可以看懂的。
2、新建一个文件,命名为sample.html,其内容如下:
Giant Sea Lion Spotted
Citizens scared, amazed
Today - Our City A giant sea lion was spotted today rampaging around the city's main square, scaring thousands of innocent people just out for a daily stroll in the beautiful downtown district.
No injuries were reported after the animal's two-hour assault of the shopping district famous for it's sea lion purses and shoes, also known as the "sea lion district". Witnesses said the creature came out of the ocean near the Burger King at 42nd and 1st Avenue, startling many and stalling traffic.
"The animal caused nearly four million dollars of damage to the neighborhood," said Joseph Valente, owner of "Sea Lions R' Us" at 43rd and 2nd. Onlookers to the scene said that the sea lion appeared ornery, but otherwise in good spirits.
Officials are uncertain as to when, if ever, the sea lion may return.Click here for more.
这个文件的内容是应用了前面所创建的css格式的html文件。(严格来说,此文件更像是一个xml文件。)
3、将一个名为sample.jpg的图片放到跟第一、二步所创建的文件的同一目录中。
4、新建一个Flash MX 2004的文件,保存在跟前面所创建的文件所在的目录中。
5、用文本工具在场景中拉一个文本输入框,命名为content。在属性面板上设置如1所示。
6、在TimeLine中新建一个图层,命名为Action,在此层的Action面板上面增加如下语句:
/* Copyright 2003 Macromedia, Inc. All rights reserved.
The following is Sample Code and is subject to all restrictions
on such code as contained in the End User License Agreement
accompanying this product.
*/
var ss:TextField.StyleSheet = new TextField.StyleSheet(); //注释1
ss.load("sample.css"); //注释2
content.styleSheet = ss; //注释3
content.multiline= true;
content.wordWrap = true;
content.html = true;
story = new XML(); //注释4
story.ignoreWhite = true;
story.load("sample.html"); //注释5
story.onLoad = function () { //注释6
content.htmlText = story;
}
注释1:定义一个变量ss,它的类型为TextField.StyleSheet。
注释2:读取sample.css文件的内容到ss中。这里要注意所有文件的保存路径要一致。
注释3:设置文本框content的几个属性。
注释4:创建一个xml对象。
注释5:读入sample.html文件的内容到story中。
注释6:设置story的onLoad函数,函数的内容为设置content的htmlText为story。
三、实际用途
从实例的制作过程中可以看到,以前在Flash中一行一行地调整文字显示效果的时候再也不会出现。Flash MX 2004中操作HTML文件非常灵活,修改显示效果也很方便,只要改一下相应的文件内容就可以了。这在用Flash来做比较多的文字显示处理的场景中非常有用。
评论 {{userinfo.comments}}
{{child.content}}
{{question.question}}
提交