Div+Css的4种闭合

目前用来清除“闭合(清除)浮动”的方法,主要是一下四种:

1.    额外标签法

这种方法就是向父容器的末尾再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器。这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签。
我个人不喜欢这种方法,但是它确实是W3C推荐的方法

<div style=”clear:both;”></div>
或者使用

<br style=”clear:both;” />

2. 使用after伪类

这种方法就是对父容器使用after伪类和内容声明在指定的现在内容末尾添加新的内容。经常的做法就是添加一个“点”,因为它比较小不太引人注意。然后我们再利用它来清除浮动(闭合浮动元素),并隐藏这个内容。
这种方法兼容性一般,但经过各种 hack 也可以应付不同浏览器了,同时又可以保证html 比较干净,所以用得还是比较多的。

以下为引用的内容:
#outer:after{
content:”.”;
height:0;
visibility:hidden;
display:block;
clear:both;
}

3.    设置overflow为hidden或者auto

这种做法就是将父容器的overflow设为hidden或auot就可以在标准兼容浏览器中闭合浮动元素.
不过使用overflow的时候,可能会对页面表现带来影响,而且这种影响是不确定的,你最好是能在多个浏览器上测试你的页面

4. 浮动外部元素,float-in-float

这种做法就是让父容器也浮动,这利用到了浮动元素的一个特性——浮动元素会闭合浮动元素。这种方式在 IE/Win 和标准兼容浏览器中都有较好的效果,但缺点也很明显——父容器未必想浮动就浮动的了,毕竟浮动是一种比较特殊的行为,有时布局不允许其浮动也很正常。

Flash支持的HTML标签有哪些

一、Flash 8 支持的HTML标签和用法

(1)Flash 8 支持的HTML标签
1、<a> 超链接标签
属性:
href—— 链接地址
target——目标窗口,可取值为_blank,_parent,_self,_top
例:
my_txt.htmlText=”<a href=http://hi.baidu.com/kmjy/creat/blog/’ target=’_blank’>开明教育</a>”

2、<b> 粗体标签
|例:
my_txt.htmlText=”<b>粗体</b>”

3、<br> 换行标签
例:
my_txt.htmlText=”第一行<br>第二行”

4、<font> 字体标签
属性:
color——字体颜色,格式#RRGGBB
face——字体,可以是单个字体或字体列表,字体名称
size——字体大小,单位像素,数字
例:
my_txt.htmlText=”<font color=’#ff0000′ face=’Arial’ size=’12′>用HTML字体标签的效果</font>”

5、<i> 斜体标签
例:
my_txt.htmlText=”<i>这里是斜体</i>”

6、<li> 列表项标签
例:
my_txt.htmlText=”Sports:<li>列表项一</li> <li>列表项二</li><li>列表项三</li>”
注意,文本属性要选中“多行”。
不支持<ol> 和<ul>标签

7、<p> 段落标记
属性:
align——对其方式,可取值left、right、center
class——应用一个css样式类
例:
my_txt.htmlText=”<p align=’right’ class=’title’>右对齐</p><p align=’left’ class=’body’>左对齐</p>”
注意,文本属性要选中“多行”。本例假设css类title和body已存在。

8、<span> 标签
说明:对位于该标签内所有文本应用css样式,只有在定义了css对象后有效。
属性:class——应用一个css样式类。
例:
my_txt.htmlText=”<span class=’body’>应用CSS样式类</span>
注意,本例假设css类body已存在。

9、<u> 下划线标签
例:
my_txt.htmlText=”<u>添加下划线</u>

两个特殊的标签:
10、<img> 图像标签
说明:这个标签的功能不仅仅是在文本框中插入图片,还可以插入SWF和MovieClip。
属性:
src—— 要加载的JPG或SWF的URL,或是MC的链接ID,这个属性是必要的,其他属性则可选。
注意:Flash不支持progressive格式的JPG。
id——指定嵌入了JPG,SWF或MovieClip的电影剪辑的名称。
width——图片/动画宽度。
height——图片/动画高度。
align——对其方式,可取值:left,right,默认为left。
hspace——文本环绕图时水平方向上与图片的空隙。
vspace——文本环绕图时垂直方向上与图片的空隙。

11、<textformat> 文本格式标签
说明:这个标签可以让你直接应用一些TextFormat对象的属性到文本中。
属性:
blcokIndent: 段落缩进大小,单位像素。
indent: 段落首行缩进大小,单位像素。
leading: 文本行间距,单位像素。
leftmargin: 文本左边距,单位像素。
rightmargin: 文本右边距,单位像素。
tabstops: 表格划分,单位像素。
注意:关于属性tabstops:它的值是一个数组,用来表示表格的列划分情况。
在文本中用转义字符\t将输出位置移动到下一个制表位。
例:
tabField=”<b>姓名\t性别\t年龄\t</b><br>”;
tabRecord1=”唐家齐\t男\t21\t<br>”;
tabRecord2=”张晓明\t女\t18\t<br>”;
txt=”<textformat tabstops=’[50,150,150]‘>” + tabField + tabRecord1 + tabRecord2 + “</textformat>”;

(2)在 Flash 8 如何使用HTML标签

第一步:新建 Flash 文档,在舞台上创建一个动态文本框,设定实例名称为my_txt 。
第二步:在第一帧加入AS代码:
my_txt.html = true; //指定该文本字段为HTML文本字段。
my_txt.htmlText= “<a href=’http://hi.baidu.com/kmjy/creat/blog/’ target=’_blank’>开明教育</a>”; //引用HTML的超链接标签。

Flash CS3里可用的HTML标签和注意事项
Adobe Flash播放器支持一组标准HTML标签, 例如<p>和<li>, 你可以把它们放在动态或输入框文本区内来格式化文字.

Flash播放器版本7和后续版本也支持<img>标签. 你可以在文本区嵌入图片(JPEG,GIF,PNG)和SWF文件.

Flash播放器自动把文字环绕在图片周围, 就像浏览器显示HTML页面时把文字环绕在图片周围那样.
Adobe Flash Player supports a subset of standard HTML tags such as <p> and <li>, which you can use to style text in any dynamic or input text field. Text fields in Flash Player 7 and later also support the <img> tag, which lets you embed image files (JPEG, GIF, PNG), SWF files, and movie clips in a text field. Flash Player automatically wraps text around images embedded in text fields in much the same way that a web browser wraps text around embedded images in an HTML page.

HTML tags supported by Adobe Flash CS3 Professional
The following HTML tags are supported by Adobe Flash CS3 Professional. Optional tag attributes appear in brackets.

引用内容 引用内容Anchor: <a href=”/support/flash/ts/documents/url”>
Bold: <b>
Font: < font [color=”#xxxxxx”] [face=”Type Face”] [size=”Type Size”]>
Italic: <I>
Paragraph: <p [align=”left”|”right”|”center”]>
Underline: <u>
Break: <br>
Image: <img src=”/images/flash/dogs.jpg”/> The <img> tag lets you embed external image files (JPEG, GIF, PNG), SWF files, and movie clips inside text fields and TextArea component instances.
List Item: <li>

 

ordered and unordered lists (<ol> and <ul> tags) are not recognized by Flash Player, so they do not modify how your list is rendered. All list items use bullets.
Span: The <span> tag is available only for use with CSS text styles.
TextFormat: The <textformat> tag lets you use a subset of paragraph formatting properties of the TextFormat class within HTML text fields, including line leading, indentation, margins, and tab stops. You can combine <textformat> tags with the built-in HTML tags.
引用内容 引用内容Additionally, Flash Player supports HTML entities:

< < (less than)
> > (greater than)
& & (ampersand)
” ” (double quotes)
&apos; ‘ (apostrophe, single quote)

程序代码 程序代码
如何使用Flash MX 2004所支持的HTML标签:
第一步:新建一个FLASH文档,在舞台上插入一个动态文本框,并命名为 my_txt 。
第二步:在第一帧加入AS代码:
my_txt.html = true; //指定该文本字段为HTML文本字段。
my_txt.htmlText=”<a href=’http://www.flash8.net’ target=’_self’>闪吧</a>”;
//引用HTML的超链接标签。
Flash MX 2004所支持的HTML标签:
<a> 超链接标签
属性:href: 链接地址
target: 目标窗口 可取值为_blank,_parent,_self,_top。
例:
my_txt.htmlText=”<a href=’http://www.flash8.net’ target=’_self’>闪吧</a>”;
<b> 粗体标签
例:
my_txt.htmlText=”<b> 闪吧</b>”;
<br> 换行标签
例:
my_txt.htmlText=”闪吧<br>”;
<font> 字体标签
属性:color:字体颜色,格式#RRGGBB。
face:字体,可以是单个字体或字体列表。
size:字体大小,单位像素。
例:
my_txt.htmlText=”<font color=’#ff0000’ face=’Arial’ size=’12’>闪吧</font>”;
<i> 斜体标签
说明:
例:
my_txt.htmlText=”<i>闪吧</i>”;
<li> 列表项标签
例:
my_txt.htmlText=”Sports:<li>新手区</li> <li>教程区</li><li>资源区</li>”;
注意,文本框要选中“多行”。
<p> 段落标记
属性:align:对其方式,可取值left,right,center。
class:应用一个css样式类。
例:
my_txt.htmlText=”<p align=’right’ class=’title’>align right</p><p align=’left’ class=’body’>align left</p>”;
注意,文本框要选中“多行”。本例假设css类title和body已存在。
<span> 标签
说明:对位于该标签内所有文本应用css样式,只有在定义了css对象后有效。
属性:class:应用一个css样式类。
例:
my_txt.htmlText=”<span class=’body’>闪吧</span>”;
注意,本例假设css类body已存在。
<u> 下划线标签
例:
my_txt.htmlText=”<u> 闪吧</u>”;
<img> 图像标签
说明:这个标签的功能不仅仅是在文本框中插入图片,还可以插入SWF和MovieClip。
属性:src: 要加载的JPG或SWF的URL,或是MC的链接ID,这个属性是必要的,其他属性则可选。
注意:Flash不支持progressive格式的JPG。
id : 指定嵌入了JPG,SWF或MovieClip的电影剪辑的名称。
width: 图片/动画宽度。
height: 图片/动画高度。
align: 对其方式,可取值:left,right,默认为left。
hspace: 文本环绕图时水平方向上与图片的空隙。
vspace: 文本环绕图时垂直方向上与图片的空隙。
例:
my_txt.htmlText=”<src=’my.swf’ width=’100’ height=’80’ align=’left’>”;
<textformat> 文本格式标签
说明:这个标签可以让你直接应用一些TextFormat对象的属性到文本中。
属性:blcokIndent: 段落缩进大小,单位像素。
indent: 段落首行缩进大小,单位像素。
leading: 文本行间距,单位像素。
leftmargin: 文本左边距,单位像素。
rightmargin: 文本右边距,单位像素。
tabstops: 表格划分,单位像素。
注意:关于属性tabstops:它的值是一个数组,用来表示表格的列划分情况。
在文本中用转义字符 将输出位置移动到下一个制表位。
例:
tabField=”<b>name Sex Age </b><br>”;
tabRecord1=”rongsheng 20 Male <br>”;
tabRecord2=”zjq 21 Female <br>”;
txt=”<textformat tabstops=’[50,150,150]’>”+ tabField+tabRecord1+tabRecord2+”</textformat>”;

【转】flash读取html

正常情况下,flash文本框显示的都近似于纯文本,比如你不能在一个动态文本框中显示不同的字号、字体和字色,更不用说在文本框中显示图片。改变这种单调面貌的一个办法就是使用flash的读取html格式文本的功能。

1、文本字段如何显示html文本

首先开启将文本呈现为 HTML功能:

文本框实例名.html = true;

然后使用htmlText属性接收html文本:

文本框实例名.htmlText=”此处是带有html标签或属性的文本”

实例1:

舞台上放一个动态文本框,实例名mytxt,时间轴第一帧写代码:

mytxt.html=true;

mytxt.htmlText=”<font color=’#ff6600′>这里是演示用的文字,它将按照html要求显示。</font>”

测试可看到效果。

//帮助文档中说:htmlText 属性文本字段支持以下 HTML 标记:abfont colorfont facefont sizeipu。此外,支持下列 HTML 属性:leftmarginrightmarginalignindentleading。 要应用这些属性,请使用 TextFormat 类或层叠样式表。有关详细信息,请参阅”学习 Flash 中的 ActionScript 2.0″中的以及”ActionScript 2.0 语言参考”中的”TextFormat 类”或”TextField.StyleSheet 类”。

 

2、通过loadvars对象读取外部html文档:

以下示例,我用TextArea组件代替动态文本框来显示读取到的html文档内容。

实例2:

var content_txt:mx.controls.TextArea;
//content_txt.multiline = true;
content_txt.wordWrap = true;
content_txt.html = true;
content_txt.hScrollPolicy = “on”;
var story:LoadVars = new LoadVars();
story.onData = function(s) {
if (s !== undefined) {
//使用文本组件的话,没有htmlText属性,使用text属性即可。
//使用动态文本框的话,必须使用htmlText属性。
content_txt.text = unescape(s);
} else {
content_txt.text = “载入错误。”;
}
};
story.load(“http://www.china.com.cn/news/txt/2009-06/17/content_17961878.htm“);

//以上例子载入了一个网络上的html页面,在flash内测试,即按下Ctrl+Enter键进行测试,效果如下图:

但是输出swf文件无法载入,上传空间也无法载入,看来和载入txt文本不同,载入html时会受flash的安全模型限制。

如果是html文档和swf文档在同一文件夹下,访问则没有任何问题,看下面实例:

实例3:

 

//————————————–flash脚本:————-

var content_txt:mx.controls.TextArea;
content_txt.wordWrap = true;
content_txt.html = true;
content_txt.hScrollPolicy = “on”;
var story:LoadVars = new LoadVars();
story.onData = function(s) {
if (s !== undefined) {
//使用文本组件的话,没有htmlText属性,使用text属性即可。
//使用动态文本框的话,必须使用htmlText属性。
content_txt.text = unescape(s);
} else {
content_txt.text = “载入错误。”;
}
};
story.load(“t.html”);

//——————–t.html文档保存在和swf在同一文件夹下,内容为:

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html;charset=UTF-8″/>
<title> 律师称邓玉娇未决定是否上诉 法学家就此案答问_中国网</title>
<meta name=”keywords” content=” 邓玉娇 汉大赋 上诉 此案 答问 认定被告人 法学家 故意伤害罪 刑法 防卫行为” /><body><font color=”#ff6600″>巴东县人民法院认为,邓玉娇在遭受邓贵大、黄德智无理纠缠、拉扯推搡、言词侮辱等不法侵害的情况下,实施的反击行 为具有防卫性质,但超过了必要限度,属于防卫过当。被告人邓玉娇故意伤害致人死亡,其行为已构成故意伤害罪。案发后,邓玉娇主动向公安机关投案,如实供述 罪行,构成自首。经法医鉴定,邓玉娇为心境障碍(双相),属部分(限定)刑事责任能力。据此,依法判决对邓玉娇免予刑事处罚。</font>
</body>
</html>

//————————————-swf输出效果:—————————

3、使用外部css样式表的方法:

flash脚本:

//===================使用外部样式表========================================
var myStyle:TextField.StyleSheet = new TextField.StyleSheet();
myStyle.load(“ys.css”);
content_txt.styleSheet = myStyle;
//=============================================================
var content_txt:mx.controls.TextArea;
content_txt.wordWrap = true;
content_txt.html = true;
content_txt.hScrollPolicy = “on”;
var story:LoadVars = new LoadVars();
story.onData = function(s) {
if (s !== undefined) {
//使用文本组件的话,没有htmlText属性,使用text属性即可。
//使用动态文本框的话,必须使用htmlText属性。
content_txt.text = unescape(s);
} else {
content_txt.text = “载入错误。”;
}
};
story.load(“t.html”);

//==================================外部样式表文件ys.css:

body {
font-family: Arial,Helvetica,sans-serif;
font-size: 16px;
font-weight: bold;
display: block;
}
//=============自己还可以继续编辑更多的样式设置

4、将文本呈现为html的好处。

从上面的截图效果可以看出,开启了html功能后,文本显示出来的格式丰富了,可以给文本中的任一处文字随意改变颜色,字体等,还可以在文本内容中显示图片。这是纯文本格式所不能比的。

如果我们想使flash文本框中的内容格式丰富多彩,使用html格式是很好的办法。

我想可以在dw的设计视图下设置好一篇文章的格式,然后从代码视图下得到它的html格式文本,进而在flash中显示html,以使flash文本格式丰富多彩。

浏览器兼容-js

1. document.form.item 问题
问题:
代码中存在 document.formName.item(“itemName”) 这样的语句,不能在FF下运行
解决方法:
改用 document.formName.elements[“elementName”]

2. 集合类对象问题
问题:
代码中许多集合类对象取用时使用(),IE能接受,FF不能
解决方法:
改用 [] 作为下标运算,例:
document.getElementsByName(“inputName”)(1) 改为 document.getElementsByName(“inputName”)[1]

3. window.event
问题:
使用 window.event 无法在FF上运行
解决方法:
FF的 event 只能在事件发生的现场使用,此问题暂无法解决。可以把 event 传到函数里变通解决:
onMouseMove = “functionName(event)”
function functionName (e) {
e = e || window.event;
……
}

4. HTML对象的 id 作为对象名的问题
问题:
在IE中,HTML对象的 ID 可以作为 document 的下属对象变量名直接使用,在FF中不能
解决方法:
使用对象变量时全部用标准的 getElementById(“idName”)

5. 用 idName 字符串取得对象的问题
问题:
在IE中,利用 eval(“idName”) 可以取得 id 为 idName 的HTML对象,在FF中不能
解决方法:
用 getElementById(“idName”) 代替 eval(“idName”)

6. 变量名与某HTML对象 id 相同的问题
问题:
在FF中,因为对象 id 不作为HTML对象的名称,所以可以使用与HTML对象 id 相同的变量名,IE中不能
解决方法:
在声明变量时,一律加上 var ,以避免歧义,这样在IE中亦可正常运行
最好不要取与HTML对象 id 相同的变量名,以减少错误

7. event.x 与 event.y 问题
问题:
在IE中,event 对象有x,y属性,FF中没有
解决方法:
在FF中,与 event.x 等效的是 event.pageX ,但event.pageX IE中没有
故采用 event.clientX 代替 event.x ,在IE中也有这个变量
event.clientX 与 event.pageX 有微妙的差别,就是滚动条
要完全一样,可以这样:
mX = event.x ? event.x : event.pageX;
然后用 mX 代替 event.x

8. 关于frame
问题:
在IE中可以用 window.testFrame 取得该frame,FF中不行
解决方法:
window.top.document.getElementById(“testFrame”).src = ‘xx.htm’
window.top.frameName.location = ‘xx.htm’

9. 取得元素的属性
在FF中,自己定义的属性必须 getAttribute() 取得

10. 在FF中没有 parentElement,parement.children 而用 parentNode,parentNode.childNodes
问题:
childNodes 的下标的含义在IE和FF中不同,FF的 childNodes 中会插入空白文本节点
解决方法:
可以通过 node.getElementsByTagName() 来回避这个问题
问题:
当html中节点缺失时,IE和FF对 parentNode 的解释不同,例如:
<form>
<table>
<input/>
</table>
</form>
FF中 input.parentNode 的值为form,而IE中 input.parentNode 的值为空节点
问题:
FF中节点自己没有 removeNode 方法
解决方法:
必须使用如下方法 node.parentNode.removeChild(node)

11. const 问题
问题:
在IE中不能使用 const 关键字
解决方法:
以 var 代替

12. body 对象
FF的 body 在 body 标签没有被浏览器完全读入之前就存在,而IE则必须在 body 完全被读入之后才存在
这会产生在IE下,文档没有载入完时,在body上appendChild会出现空白页面的问题
解决方法:
一切在body上插入节点的动作,全部在onload后进行

13. url encoding
问题:
一般FF无法识别js中的&
解决方法:
在js中如果书写url就直接写&不要写&

14. nodeName 和 tagName 问题
问题:
在FF中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值,在IE中,nodeName 的使用有问题
解决方法:
使用 tagName,但应检测其是否为空

15. 元素属性
IE下 input.type 属性为只读,但是FF下可以修改

16. document.getElementsByName() 和 document.all[name] 的问题
问题:
在IE中,getElementsByName()、document.all[name] 均不能用来取得 div 元素
是否还有其它不能取的元素还不知道(这个问题还有争议,还在研究中)

17. 调用子框架或者其它框架中的元素的问题
在IE中,可以用如下方法来取得子元素中的值
document.getElementById(“frameName”).(document.)elementName
window.frames[“frameName”].elementName
在FF中则需要改成如下形式来执行,与IE兼容:
window.frames[“frameName”].contentWindow.document.elementName
window.frames[“frameName”].document.elementName

18. 对象宽高赋值问题
问题:
FireFox中类似 obj.style.height = imgObj.height 的语句无效
解决方法:
统一使用 obj.style.height = imgObj.height + “px”;

19. innerText的问题
问题:
innerText 在IE中能正常工作,但是 innerText 在FireFox中却不行
解决方法:
在非IE浏览器中使用textContent代替innerText

20. event.srcElement和event.toElement问题
问题:
IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性
解决方法:
var source = e.target || e.srcElement;
var target = e.relatedTarget || e.toElement;

21. 禁止选取网页内容
问题:
FF需要用CSS禁止,IE用JS禁止
解决方法:
IE: obj.onselectstart = function() {return false;}
FF: -moz-user-select:none;

22. 捕获事件
问题:
FF没有setCapture()、releaseCapture()方法
解决方法:
IE:
obj.setCapture();
obj.releaseCapture();
FF:
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
if (!window.captureEvents) {
o.setCapture();
}else {
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}
if (!window.captureEvents) {
o.releaseCapture();
}else {
window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}

flash+txt教程 As2

想从外部文件(例如文本文件,或由 ColdFusion、CGI 脚本、ASP、PHP 或 Perl 脚本生成的文本)中读取数据,并设置 Flash Player 的某个级别中的变量的值。我们一般要用到
指 定的 URL 处的文本必须为标准的 MIME 格式 application/x-www-form-urlencoded(CGI 脚本所使用的一种标准格式)。可以指定任意数量的变量。例如,下面的代码定义了多个变量:loadVariablesNum 函数 和loadVariables 函数
loadVariablesNum 函数
loadVariablesNum(url:String, level:Number, [method:String]) : Void此函数还可用于使用新值更新活动 SWF 文件中的变量。
参数
url:String – 变量所处位置的绝对或相对 URL。如果发出此调用的 SWF 文件正在 Web 浏览器上运行,则 url 必须与 SWF 文件位于同一个域中;有关详细信息,请参见”说明”部分。
level:Number – 一个整数,指定 Flash Player 中接收这些变量的级别。
method:String [可选] – 指定用于发送变量的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量,则省略此参数。GET 方法将变量附加到 URL 的末尾,它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量,它用于发送长字符串的变量。
loadVariables 函数
loadVariables(url:String, target:Object, [method:String]) : Void
参数
url:String – 变量所处位置的绝对或相对 URL。如果发出此调用的 SWF 文件正在 Web 浏览器上运行,则 url 必须与 SWF 文件位于同一个域中;有关详细信息,请参见”说明”部分。
target:Object – 指向接收所加载变量的影片剪辑的目标路径。
method:String [可选] – 指定用于发送变量的 HTTP 方法。该参数必须是字符串 GET 或 POST。如果没有要发送的变量,则省略此参数。GET 方法将变量附加到 URL 的末尾,它用于发送少量的变量。POST 方法在单独的 HTTP 标头中发送变量,它用于发送长字符串的变量。
如果要将变量加载到目标影片剪辑中,请使用 loadVariables() 而不是 loadVariablesNum()。
了解了这两个函数后我们就可以用它实现载入外部TXT文件。
准备工作:
创建一个文本文件t.txt,内容是t=xxxxxxxxxxxxxxxxxxxxxx。
(注意:“=”前后不能有空格。)
示例:t=这正在制作载入外部TXT文本文件的效果
FLASH部分:
这里直接在_root里创建文本域content_txt,使用loadVariables()方法。
System.useCodepage = true;
createTextField(“content_txt”,0,0,0,200,0);
/*创建一个新文本字段的深度为0 x 坐标为0 y 坐标为0字段的宽度为200字段的高度为0的content_txt /*
content_txt.wordWrap = true;
content_txt.variable = “t”;
content_txt.autoSize = “left”;
content_txt.selectable = false;
loadVariables(“t.txt”, _root);
装载t.txt后,其t的内容自动赋值给_root.content_txt的变量t。
这种方法不需要在场景内建立任何动态文本框。加载t.txt中T的内容直接显示在主场景上

Flash是支持少量的html语法的。
如果你对html语法不太熟悉的话,先用网页制作工具frontpage等建一个简单的文本,
在普通页面里给它加上超连接、字体颜色、下划线等非常简单。
frontpage里html显示如下:<p align=left><font color=’#FF6699′>载入TXT实验</font></p>
给变量t赋值如下:
t = “<p align=left><font color=#FF6699>载入TXT实验</font></p>\r\n
<p>***********************************************************************************。</p>\r\n
<p align=right><a href=http://www.578453175.com/>
<font color=#008080><u>转载网址</u></font></a></p>”

FLASH的AS:
在主场景第一帧上:
loadVariablesNum(“t.txt”, 0); //把t.txt载入进FLASH
在第二帧上:
t.htmltext = t;
stop();
同时把实例名为T的动态文本框加入些帧(在flash里建动态文本框,实例名为t。设置多行显示,把html等4个选项的勾全选。 )
这样,FLASH就能够把简单的HTML代码所标识的效果反映出来。
上 面几节flash+txt教程我们了解了FLASH怎么调用外部的TXT文本文件,这样更新网站内容时,只需打开这个TXT更改内容就可以了。但是我们需 要把TXT文件打开才能更改,有没有办法在后台里直接更新TXT文本内容呢,或者直接用FLASH来生成这个TXT。这节我教大家用FLASH通过ASP 直接生成TXT的文本文件。(可用于制作留言本)

准备工作:
1、一个ASP文件用于写入数据的用途:guest.asp
<%
subject = request(“sub”)
name = request(“name”)
text = request(“text”)
action = request(“action”)

if (action <> “add”) then

set fin = Server.CreateObject(“Scripting.FileSystemObject”)
filepath = Server.MapPath(“guest.txt”)
set f = fin.OpenTextFile(filepath)
buf = f.readAll
response.write(buf)

f.close
end if

if (action = “add”) then

set fin = Server.CreateObject(“Scripting.FileSystemObject”)
filepath = Server.MapPath(“guest.txt”)
set f = fin.OpenTextFile(filepath)
line = f.readline
total = int(mid(line,8))

buf = f.readAll

f.close

set fout = Server.CreateObject(“Scripting.FileSystemObject”)

Application.lock

filepath = Server.MapPath(“guest.txt”)
set f = fout.CreateTextFile(filepath,TRUE)

total = total + 1
f.writeline “&total=”&total
f.writeline “&sub”&total&”=”&subject
f.writeline “&name”&total&”=”&name
f.writeline “&text”&total&”=”&text
f.write buf

f.close

Application.unlock

response.write(“&added=1”)
end if
%>

2、文本文件(数据库用途)guest.txt
内容:
&total=0
先定义数据为0
FLASH部分:
我们创建三个数据写入TXT,分别是:sub(主题),name(名字),text(内容);然后total数据自动增加.
在FLASH里的第一帧,我们先把这些数据初始化,并调用ASP文件读取TXT里的数据。
在第一帧上写:
total = 0;
added = 0;
sub = “”;
name = “”;
text = “”;
backmethod = 0;
r = random(65500);
loadVariables(“guest.asp?action=” add r, “”);

在第二帧上:
接着我们创建几个输入文本框,把要创建的数据提交上去
变量名为sub的输入文本框
变量名为name的输入文本框
变量名为text的输入文本框
一个提交按钮,提交钮
on (release) {
gotoAndPlay(“do_insert”);
}
把过程交给帧实例名为do_insert的去处理,当然你也可以直接提交处理,但这样看起来清楚些。
在第三帧上:
if ((sub eq “”) or (name eq “”) or (text eq “”)) { //判断各项数据填写是否为空
gotoAndPlay(“error”);//填写为空的话就转到帧实列名为error的处理效果
} else {
temp = “正在向服务器添加数据……”;//或者动态文本text里出现提示语
loadVariables(“guest.asp?action=add”, “”, “POST”);
gotoAndPlay(“wait2”);//转到帧实列名为wait2的处理效果
}
并对该帧命名为do_insert,在此帧上创建一个动态文本,变量命为text。
在第四帧上创建ERROR错误出现效果,在第五帧上创建WAIT2等待写入的效果。
这样,就完成了,用FLASH生成一个叫guest.txt的文件的效果,并且每次写入新信息,会在该txt文件里加一条新的信息。

Flash Player 与 HTML 容器之间发送数据的过程演示

以下示例演示了在 Flash Player 与 HTML 容器之间发送数据的过程。package {
import flash.display.Sprite;
import flash.events.*;
import flash.external.ExternalInterface;
import flash.text.TextField;
import flash.utils.Timer;
import flash.text.TextFieldType;
import flash.text.TextFieldAutoSize;

public class ExternalInterfaceExample extends Sprite {
private var input:TextField;
private var output:TextField;
private var sendBtn:Sprite;

public function ExternalInterfaceExample() {
input = new TextField();
input.type = TextFieldType.INPUT;
input.background = true;
input.border = true;
input.width = 350;
input.height = 18;
addChild(input);

sendBtn = new Sprite();
sendBtn.mouseEnabled = true;
sendBtn.x = input.width + 10;
sendBtn.graphics.beginFill(0xCCCCCC);
sendBtn.graphics.drawRoundRect(0, 0, 80, 18, 10, 10);
sendBtn.graphics.endFill();
sendBtn.addEventListener(MouseEvent.CLICK, clickHandler);
addChild(sendBtn);

output = new TextField();
output.y = 25;
output.width = 450;
output.height = 325;
output.multiline = true;
output.wordWrap = true;
output.border = true;
output.text = “Initializing…\n”;
addChild(output);

if (ExternalInterface.available) {
try {
output.appendText(“Adding callback…\n”);
ExternalInterface.addCallback(“sendToActionScript”, receivedFromJavaScript);
if (checkJavaScriptReady()) {
output.appendText(“JavaScript is ready.\n”);
} else {
output.appendText(“JavaScript is not ready, creating timer.\n”);
var readyTimer:Timer = new Timer(100, 0);
readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
readyTimer.start();
}
} catch (error:SecurityError) {
output.appendText(“A SecurityError occurred: ” + error.message + “\n”);
} catch (error:Error) {
output.appendText(“An Error occurred: ” + error.message + “\n”);
}
} else {
output.appendText(“External interface is not available for this container.”);
}
}
private function receivedFromJavaScript(value:String):void {
output.appendText(“JavaScript says: ” + value + “\n”);
}
private function checkJavaScriptReady():Boolean {
var isReady:Boolean = ExternalInterface.call(“isReady”);
return isReady;
}
private function timerHandler(event:TimerEvent):void {
output.appendText(“Checking JavaScript status…\n”);
var isReady:Boolean = checkJavaScriptReady();
if (isReady) {
output.appendText(“JavaScript is ready.\n”);
Timer(event.target).stop();
}
}
private function clickHandler(event:MouseEvent):void {
if (ExternalInterface.available) {
ExternalInterface.call(“sendToJavaScript”, input.text);
}
}
}
}为了测试前面的 ActionScript 代码,请使用以下 HTML 模板嵌入生成的 SWF 文件: <!– saved from url=(0014)about:internet –>
<html lang=”en”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>ExternalInterfaceExample</title>
<script language=”JavaScript”>
var jsReady = false;
function isReady() {
return jsReady;
}
function pageInit() {
jsReady = true;
document.forms[“form1”].output.value += “\n” + “JavaScript is ready.\n”;
}
function thisMovie(movieName) {
if (navigator.appName.indexOf(“Microsoft”) != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
function sendToActionScript(value) {
thisMovie(“ExternalInterfaceExample”).sendToActionScript(value);
}
function sendToJavaScript(value) {
document.forms[“form1”].output.value += “ActionScript says: ” + value + “\n”;
}
</script>
</head>
<body onload=”pageInit();”>

<object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″
id=”ExternalInterfaceExample” width=”500″ height=”375″
codebase=”http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab”>
<param name=”movie” value=”ExternalInterfaceExample.swf” />
<param name=”quality” value=”high” />
<param name=”bgcolor” value=”#869ca7″ />
<param name=”allowScriptAccess” value=”sameDomain” />
<embed src=”ExternalInterfaceExample.swf” quality=”high” bgcolor=”#869ca7″
width=”500″ height=”375″ name=”ExternalInterfaceExample” align=”middle”
play=”true” loop=”false” quality=”high” allowScriptAccess=”sameDomain”
type=”application/x-shockwave-flash”
pluginspage=”http://www.macromedia.com/go/getflashplayer”>
</embed>
</object>

<form name=”form1″ onsubmit=”return false;”>
<input type=”text” name=”input” value=”” />
<input type=”button” value=”Send” onclick=”sendToActionScript(this.form.input.value);” /><br />
<textarea cols=”60″ rows=”20″ name=”output” readonly=”true”>Initializing…</textarea>
</form>

</body>
</html>

FLASH起步AS2.0教程

1.你先学会加动作的三种方式:在帧上加,在mc上加,在按钮上加.用play stop goto这三
个命令反 复练习.不要用太多的命令给自己吃迷晕药.用实例练,不要空练.
2.会了我说的1后,要学给按钮加动作的8种方法和给mc加的9种方法.
3,会了我说的2了,就要学个编程最基础最重要的东西—-路径的描述(能看懂就能用)

1> _root.mc1.mc2. … mcn.play()[或stop(), _x, …….]
2>_parnet
3>this
4>mc1.mc2. …
5>_leveln.mc1.mc2. … mcn.play()[或stop(), _x, …….]

练习这样个实例对你也许有帮助, 把一首你喜欢听的歌随意放在某个mc中,随
意地在某个mc或按钮上加动作去控制它,想让它停就停,想让它放就放.
4。遇到问题,自己想办法解决,不要老是依靠别人,在自己做过之后还是不行的话可就要发问拉,当然问的方法要好多种,这里就不说拉!
5.要自强自信,不要迷信洋人的东东,活学活用重在理
6.了解代码执行的先后顺序:
图层默认的是从下向上执行
level是从下向上执行
帧是随实际播放顺序执行
代码本身从上向下一行一行地执行
7.了解两种坐标系统:
场景下的坐标,o点在左上角,y轴向下是增大 x向右是增大
组件的坐标,o点在组件中心,y轴向下是增大 x向右是增大
8.了解三种文本域
静态文体域:和排版软件的文字工具一样.
动态文本域和输入文本域:其实就把它们看是两种变量,只不过是可见的变量,
9.详细了解GOTO语句
prevFrame()
跳至并停止在前一祯。
nextFrame()
跳至并停止在下一祯。
prevScene()
跳至并停止在前一场景的第1帧。
nextScene()
跳至并停止在下一场景的第1帧。
gotoAndPlay([scene,] frame)
跳至scene场景(省略表示当前场景)的frame帧并播放。
gotoAndStop([scene,] frame)
跳至scene场景(省略表示当前场景)的frame帧并停止。
10,了解MC的各种可改写的属性
_x 中心点所在相对X坐标(象素单位)
_y 中心点所在相对Y坐标(象素单位)
_xscale 横向缩放比例,初始为100
_yscale 纵向缩放比例,初始为100
_rotation 相对旋转角度(度单位)
_width 相对显示宽度(象素单位)
_height 相对显示高度(象素单位)
_alpha 显示透明度(0~100)
_visible 是否可见
_focusrect 是否显示焦点框
_name 实例名称
11,三大纪律:1>写代码时一定要用英文(如EN CH)输入法
2>必须要有唯物主义思想,没有加载的MC是不可以更改它的属
性,更不可以写代码去控制它。这个问题较难掌握,高手有时也会
犯,道理就是先有吃的才能请客吃,啥也没有请客吃什么呢
3>操作什么一定要选什么(实际上哪个软件也要这样)。在MX中加代
码时如不选,就一定要写明名称,实际上也是一种先择。
12,八项注意:1>按钮不能盖着输入文本,动态文本和输入文本域不能盖着按钮
2>用loadMoie时LEVEL1及以上的文件尽量少用大隐型按钮
3>从一个文件中复制MC实例到别一个文件中时,尽量复制帧,而不能直接
复制实例,
4>从一个文件中复制MC实例到别一个文件中时,要先把目标文件中的符
号库中原有的符号,装进资夹里,很多网友这个问题上上过当吧?

5>….. ActionScript的基本语法规则
使用ActionScript编写脚本时,如果使用正常模式的动作面板,通过菜单和列表选择选项,可以创建简单的动作。要想用ActionScript编写功能强大的脚本,你就必须深入了解和学习Flash MX的ActionScript脚本语言。
像 其它脚本语言一样,ActionScript也有变量、函数、对象、操作符、保留关键字等语言元素,有它自己的语法规则。ActionScript允许用 户创建自己的对象和函数。ActionScript的语法和风格与javascript非常相似,但不完全相同。ActionScript拥有自己的句法 和标点符号使用规则,这些规则规定了一些字符和关键字的含义,以及它们的书写顺序。例如,在英语中用句号结束一个句子,而在ActionScript中则 用分号结束一个语句。
下面列出的是ActionScript的一些基本语法规则,对于比较比较特别的规则,请参阅ActionScript词典。
1.点语法
在 ActionScript中,点(.)被用来指明与某个对象或电影剪辑相关的属性和方法。它也用标识指向电影剪辑或变量的目标路径。点语法表达式由对象或 电影剪辑名开始,接着是一个点,最后是要指定的属性、方法或变量。例如,表达式ballMC.x是指电影剪辑实例ballMC的_X属性,_X电影剪辑属 性指出编辑区中电影剪辑的X轴位置。
例如,submit是在电影剪辑form中设置的一个变量,而form又是嵌套在电影剪辑shoppingCart中的电影剪辑。表达式shoppingCart.form.submit=true的作用是设置实例form的submit变量的值为true。
表达一个对象或电影剪辑的方法遵循相同的模式。例如,ballMC实例的play方法用于移动ballMC的时间轴播放头,就像下面的语句:

ballMC.play();
点语法使用两个特殊的别名:_root和_parent。别名_root是指主时间轴。可以使用_root别名创建一个绝对路径。例如,下面的语句调用主时间轴中电影剪辑functions的buildGameBoard函数:
_root.functions.buildGameBoard();
Flash MX允许使用别名_parent来引用嵌套当前电影剪辑的电影剪辑。也可以用_parent创建一个相对目标路径。例如,如果电影剪辑dog被嵌套在电影剪辑animal之中,那么,在实例dog上的下列语句告诉animal电影剪辑停止播放:

_parent.stop();

2.斜杠语法
Flash的以前版本是使用斜杠语法指出电影剪辑或变量的目标路径的。Flash MX播放器仍然支持这种语法,但不推荐使用。在斜杠语法中,斜杠被用来代替点,用以标明电影剪辑或变量的路径。要指出一个变量,可以在变量前加上冒号,如下面的语句所示:
myMovieClip/childMovieClip:my Variable

我们现在用点语法取代上述斜杠语法来表示上面的目标路径:
myMovieClip.childMovieClip.myVariable

斜杠语法在tellTarget动作中使用最为普遍,但这种动作在Flash MX中已不再推荐使用。
【说明】与其使用tellTarget动作还不如使用with动作与点语法兼容。 3.大括号
ActionScript语句用大括号({})分块,如下面的脚本所示:
on(release){
myDate = new Date();
currentMonth = myDate.getMonth();
}
4.分号
ActionScript语句用分号(;)结束,但如果你省略语句结尾的分号,Flash仍然可以成功地编译你的脚本。例如,下面的语句用分号结束:
colum = passedDate.getDay();
row = 0;

同样的语句也可以不写分号:
colum = passdDate.getDay()
row = 0
5.圆括号
定义一个函数时,要把参数放在圆括号中:
function myFunction (name, age, reader){

}

调用一个函数时,也要把要传递的参数放在圆括号中:
myFunction (“Steve”,10,true);
圆括号可以用来改变ActionScript的运算优先级,或使自己编写的ActionScript语句更容易阅读。
也可以用圆括号来计算点语法点左边的表达式。例如,在下面的语句中,圆括号使表达式new color(this)得到计算,并创建了一个新的颜色对象:
onClipEvent(enterFrame){
(new Color(this)).setRGB(oxffffff);
}

在上例中,如果不使用圆括号,就需要在代码中增加一个语句来计算它:
onClipEvent(enterFrame){
myColor = new Color(this);
myColor.setRGB(0xffffff);
}
6.大小写字母
在ActionScript中,只有关键字区分大小写。对于其余的ActionScript,可以使用大写或小写字母。例如,下面的语句是等价的:

cat.hilite = true;
CAT.hilite = true;

但是,遵守一致的大小写约定是一个好的习惯。这样,在阅读ActionScript代码时更易于区分函数和变量的名字。如果在书写关键字时没有使用正确的大小写,你的脚本将会出现错误。例如下面的两个语句:
setProperty(ball,_xscale,scale);
setproperty(ball,_xscale,scale);

前一句是正确的,后一句中property中的p应是大写而没有大写,所以是错误的。在动作面板中启用彩色语法功能时,用正确的大小写书写的关键字用蓝色区别显示,因而很容易发现关键字的拼写错误。 7.注释
需要记住一个动作的作用时,可在动作面板中使用comment(注释)语句给帧或按钮动作添加注释。如果你在协作环境中工作或给别人提供范例,添加注释有助于别人对你编写的脚本的正确理解。
在动作面板中选择comment动作时,字符”//”被插入到脚本中。如果在你创建脚本时加上注释,即使是较复杂的脚本也易于理解,例如:
on(release){
//建立新的日期对象
myDate = new Date();
currentMonth=myDate.getMonth();
//把用数字表示的月份转换为用文字表示的月份
monthName = calcMoth(currentMonth);
year = myDate.getFullYear();
currentDate = myDate.getDat();
}

在脚本窗口中,注释内容用粉红色显示。它们的长度不限,也不影响导出文件的大小。
8. 关键字
ActionScript保留一些单词,专用于与本语言之中。因此,不能用这些保留字作为变量、函数或标签的名字。下表列出了ActionScript中所有的关键字:
break continue delete else
for function if in
new return this typeof
var void while with
【注意】这些关键字都是小写形式,不能写成大写形式。 9.常量
常量有其值永不改变的属性。常数用大写字母列于动作工具箱中。例如,常数BACKSPACE、ENTER、QUOTE、RETURN、SPACE和TAB是Key对象的属性,指键盘上的键。要测试用户是否在按Enter键,可使用下面的语句:
if(keycode()= =key.ENTER){
alert = “你准备好了吗?”
controlMC.gotoAndStop(5);
}

ActionScript中的术语
ActionScript根据特定的语法规则使用特定的术语。以下按字母顺序介绍重要的ActionScript术语.
Actions(动作):是指导Flash电影在播放时执行某些操作的语句。例如,gotoAndStop动作就可以将播放头转换到指定的帧或帧标记。Action(动作)也可以被称作statement(语句)。
Arguments(参数):是允许将值传递给函数的占位符。例如,以下语句中的函数welcome就使用了两个参数firstName和hobby来接收值:

function welcome(firstName,hobby) {
welcomeText = “Heelo,” + firstName + “I see you enjoy” + hobby;
}

Classed(类):是各种数据类型。用户可以创建”类”并定义对象的新类型。要定义对象的类,用户需创建构造器函数。
Constants(常量):是不会改变的元素。常量对于值的比较非常有用。
Constructors(构造器):是用来定义”类”的属性和方法的函数。以下代码通过创建Circle构造器函数生成了一个新的Circle类。

function Circle(x, y, radius) {
this.x = x;
this.y = y;
this.radius = radius;
}

Data types(数据类型):是可以执行的一组值和操作。ActionScript的数据类型包括:字符串、数值、逻辑值、对象和影片剪辑。
Events(事件):是在电影播放过程中发生的动作。例如,当电影裁入时、当播放头到达某一帧时、当用户单击按钮或影片剪辑时、当用户按压键盘上的按钮时,都会产生不同的操作。
Expressions(表达式):是可以产生值的语句。例如2+2就是一个表达式。
Functions(函数):是可以重复使用和传递参数的代码段,可以返回一个值。例如,getProperty函数就可以使用影片剪辑的实例名称和属性名称,返回属性值。getVersion函数可以返回当前播放电影的Flash播放器的版本。
Handlers(句柄):是可以管理诸如mouseDown和load事件的特殊动作。例如,onMouseEvent和onClipEvent就是ActionScript的句柄。
Identifiers(标识符):是用来指示变量、属性、对象、函数或方法的名称。标识符的首字母必须是字符、下划线(_)或美元符号($)。后续字符可以是字符、数字、下划线或美元符号。例如,firstName就是一个变量名。
Instances(实例):是属于某些class(类)的对象。每个类的实例都包含该类的所有属性和方法。例如,所有影片剪辑实例都包含MovieClip类的属性(透明度属性、可见性属性)和方法(例如gotoAndPlay、getURL等)。
Instance names(实例名称):是一个唯一的名称。可以在脚本作为目标被指定。
Keywords(关键字):是具有特殊意义的保留用词。例如,var就是一个关键字,它可以用来定义本地变量。
Methods(方法):是指定给对象的函数。在函数被指定给对象之后,该函数就可以被称为是该对象的方法。
Objects(对象):是属性的集合。每个对象都有自己的名称和值。对象允许用户访问某些类型的信息。例如,ActionScript的预定义对象Date就提供了系统时钟方面的信息。
Operands(运算项):是由表达式中的运算符操控的值。
Operators(运算符):可以从一个或多个值中计算获得新值。例如,将两个数值相加就可以获得一个新值。
Parameters(参数):也被称之为Arguments(参数)。
Properties(属性):是定义对象的attributer(属性)。例如,所有影片剪辑对象都具有_visible(可见性)属性,通过该属性可以决定影片剪辑是否显示。
Target paths(目标路径):是Flash电影中影片剪辑名称、变量和对象的垂直分层结构地址。主时间轴的名称是_root。影片剪辑属性检查器中可以命名影片剪辑的实例。
用户可以通过目标路径使动作指向影片剪辑,也可以使用目标路径获取或设置变量的值。例如,以下示例语句就是影片剪辑stereoControl内部的变量volume的路径:
-root.stereoControl.volume
Variables(变量):是存储了任意数据类型值的标识符。变量可以创建、修改和更新。变量中存储的值可以被脚本检索使用。在以下的示例中,等号左边的是变量标识符,右边的则赋予变量的值:
x = 5;
name = “Lolo”;
customer.address = “66 7th Street”;
c = new Color(mcinstanceName);

编写ActionScript脚本
编 写Flash动作脚本并不需要用户对ActionScript有完全的了解,用户的需求才是真正的目标。有了设计创意之后,用户要做的就是为此选择恰当的 动作、属性、函数或方法。学习ActionScript的最佳方法是创建脚本。用户可以在动作面板的帮助下建立简单脚本。一旦熟悉了在电影中添加诸如 play和stop这样的基础动作之后,用户就可以开始学习更多有关ActionScript的知识。要使用ActionScript的强大功能,最重要 的是了解ActionScript语言的工作原理:ActionScript语言的基础概念、元素以及用来组织信息和创建交互电影的规则等。 1.脚本的规划和调试
在为整个电影编写脚本时,脚本的数量和变化可以可能都是巨大的。例如,用户可能需要考虑以下问题:决定使用哪些动作,如何建立更有效的脚本结构,以及在哪些地方放置脚本?所有这些问题都需要经过仔细规划和测试。特别是当电影变得越来越复杂时,这些问题更加显得突出。
在开始编写脚本之前,用户需明确自己要达到的目标。例如,这些目标可能是
使用Flash创建整个站点。
? 询问站点访问者姓名,并且在整个站点中重复使用该信息。
? 站点具有一个可拖动的导航工具栏,可以帮助用户跳转到站点的任意分支。
? 当某一个按钮被单击时,新的内容以淡入方式出现在舞台中央。
? 专门设立一个和用户联系的场景,其中包含已经填入用户姓名的表单。
在明确了制作动画要达到的目的之后,用户就可以开始创建对象并编写脚本来控制这些对象。
让 脚本按照自己需要的方式工作,这通常比编写脚本要花费时间。用户需要经常不断地测试自己的脚本是否工作正常。为达到目的,最好的方法是从简单脚本开始,频 繁测试,编写并测试完一部分可正常工作的脚本之后,就可以保存文件的一个版本。这种工作方法可以帮助用户更有效地调试脚本错误,在编写更加复杂的脚本时也 有坚实的基础。 2.面向对象的脚本编程
在面向对象的编程方法中,用户通过将信息分类成组来组织信息。用户可以创建某一类信息的多个实例,以便 在脚本中使用。用户可以使用ActionScript预定义的class(类),也可以创建自己的类。ActionScript内置的类位于动作在板的 Objects(对象)文件夹。
在创建class(类)时,用户需为由该类所创建的每个对象定义所有属性(特性)和方法(行为)。这和现实世界中 对象的定义方法一样。例如,”人”具有诸如性别、身高和头发颜色之类的属性,”人”的行为包括说话、走路、投掷等,在本示例中,”人”就是一个类,而每个 单独的人就是该类的实例,即Object(对象)。
ActionScript中的对象可以包含数据,也可以是舞台上的影片剪辑。所有影片剪辑都是 预定义的MovieClip类的实例。每个影片剪辑实例都有MovieClip类的所有属性(例如_height,高度;_rotation,旋 转;_totalframes,总帧数等)和所有方法(例如,gotoAndPlay,转到并播放;loadMovie,载入电影;startDrag, 开始拖动等)。
要定义class(类),用户需创建一个特殊的被称为”构造器”的函数。Flash预定义的类已经定义了构造器函数。例如,如果需 要电影中一个骑车人的信息,则可以创建一个名为Biker的构造器函数。该函数包括”时间”和”距离”属性,也包含”速度”方法,该方法可以将骑车人的移 动速度告诉用户。
function Biker(t, d) {
this.time = t;
this.distance = d;
}
function Speed() {
return this.time/this.distance;
}
Biker.prototype.rate = Speed;

在编写构造器函数之后,用户就可以创建Biker类的副本,即:实例。以下代码就可以创建Biker类对象的实例emma和hamish:

emma = new Biker(30, 5);
hamish = new Biker(40,5);

实 例之间还可以相互通信。例如,对于Biker类的对象来说,用户可以创建一个shove(推)的方法,让一个骑车人推另外一个骑车人。这样,当 hamish实例靠得太近时,emma实例就可以调用shove方法,将hamish推开。要将信息传递给方法,可使用参数。例如,shove(推)方法 就可以携带who(被推者)和howFar(推多远)参数,如下列示例。

emma.shove(hamish, 10);

在 面向对象编程方法中,类可以按指定顺序相互接收属性和方法,这就是所谓的继承。用户可以使用继承扩展或重定义类的属性和方法,从其他类继承属性和方法的类 被称为”子类”,将属性和方法传递给其他类的类被称为”超类”,一个类可以同时是”子类”和”超类”。 3.脚本的流程
Flash将从第一行语句开始执行ActionScript语句,一直按次序执行到最终语句或ActionScript指定跳转到的语句。
将执行次序发送到其他地方而不是下一语句的动作包括:if语句、do…while循环和return动作。
if 语句被称为条件判断语句或”逻辑分支”,因为它是基于某些条件的评估判断来控制脚本流程的。例如,以下代码就将检查变量mynumber中的值是否否小于 或等于10,如果检查结果返回true(例如,mynumber的值为5),则变量alert被设置文本字符串值,并在输出的文本域中显示其值。
if (myNumber <=10) {
alert = “The number is less than or equal to 10”;
}

用 户也可以添加else语句来创建更加复杂的条件判断语句。在以下示例中,如果条件判断返回true(例如,变量mynumber的值为3),则第一组大括 号之间的语句将执行,alert变量将显示第二行的值。如果条件判断返回false(例如,变量mynumber的值为30),则第一组代码区将被跳 过,else语句后面的大括号之间的语句将执行。
if (myNumber <=10) {
alert = “The number is less than or equal to 10”;
}else {
alert = “The number is greate than 10”;
}

循环语句将重复执行某一动作若干次,直到满足某一条件才结束。在以下示例中,影片剪辑将被复制5次。
i = 0;
do {
duplicateMovieClip (“myMovieClip”,”newMovieClip”+i,i);
newName = eval(“newMovieClip”+i);
setProperty(newName,_x,getProperty(“myMovieClip”,_x)+(i*5));
i=i+1
}while(i<=5);

4.脚本的运行
在 编写脚本时,用户可以使用动作面板,将脚本附加给时间轴中的帧,也可以附加给舞台上的按钮或影片剪辑。附加给帧的脚本将在播放头到达该帧时执行,而附加给 按钮或影片剪辑的脚本则在某一事件发生时执行。所谓的”事件”,可以是电影播放时鼠标移动、某个按钮被按下,也可以是某个影片剪辑被载入等。使用 ActionScript可以发现操作发生的时间,然后根据该事件执行指定的脚本。
附加给按钮或影片剪辑的动作被一个特殊的动作包围,该动作被称 之为handler(处理程序),onClipEvent和on动作都被称之为处理程序,中因为它们操控或管理着操作。用户可以为每个处理程序指定一个或 多个操作。当由处理程序指定的事件发生时,影片剪辑或按钮动作才执行。如果要在不同的事件发生时执行不同的动作,则可以给一个对象附加多个处理程序。
onClipEvent 动作处理的是影片剪辑的事件,而on动作则处理按钮的事件。用户也可以和影片剪辑一起使用on动作,创建一个能接受鼠标事件的影片剪辑。 后记:当然方法有很多种,最重要的是选择适合自己的学习方法,结合示例多想多做多练,你一定会成功的!!!!!

FLASH+XML教程(适用于AS2.0)

在FLASH中,使用XML接口获取外部数据是最有效的方法之一.(通常还有WebSerivce接口和LoadVars方法)
下面来看一个简单的XML文档(city.xml)
这个文档描述的是城市地区的信息

xml version=”1.0″ encoding=”gb2312″?>
<root>
<city name=”上海” code=”021″ pnum=”500000″/>
<city name=”北京” code=”010″ pnum=”600000″/>
<city name=”浙江” code=”057″ pnum=”1000000″/>
root>
简单介绍一下XML文档格式的书写规范:
第一行:
这是一个XML文档的描述信息.其中定义了该XML文档的一些基本属性,包括:版本信息(version),使用的字符编码(encoding).

第二行:
(虽然在FLASH中我们用不到节点的任何属性,但是合式的XML文档必须要求一个根节点)
在 XML文档中,这是一个根节点.XML规定所有标签必须有闭合.所以,在最后一行使用对应的标签来闭合.同样,单行的XML节点也需要闭合,例如:其 中”/”符号就表示单行的节点闭合.”name”,”code”,”pnum”是节点的属性,写法就是:属性名=”属性值” 这样的名/值对.至于节点名和属性名都是可以自定义的,也就是说可以任意命名.但是还是建议要尽量规范

“”节点是””的子节点,相应的””叫做””的父节点

在这个XML文档中有3个子节点,我们数据就存储在这3个子节点的属性中,分别有:城市名称(name),城市代码(code),城市人口数目(pnum)
我们要做的最终目的就是在FLASH中获取这些节点的属性值

下面来看一个FLASH调用XML的实例

System.useCodepage = true;
var doc:XML = new XML();
doc.load(“city.xml”);
doc.ignoreWhite = true;
doc.onLoad = function(success){
if(success){
trace(doc.childNodes[0].childNodes[0].attributes.name);
trace(doc.childNodes[0].childNodes[1].attributes.name);
trace(doc.childNodes[0].childNodes[2].attributes.name);
}
}
分析:

System.useCodepage = true;
如果在XML文档中使用了中文编码,例如”gb2312″.那么在FLASH中必须启用使用页面编码的指令.

var doc:XML = new XML();
建立一个XML实例.赋予”doc”这个对象.

doc.load(“city.xml”);
“load()”-XML对象的一个方法:加载XML数据到”doc”这个对象当中.
提供XML数据的方式并不是限制于.xml的文件,任何符合XML书写格式的文档都可以,通常,我们是使用程序来提供XML数据的,例如”http://www.51ww.com/city.aspx?country=china”

doc.ignoreWhite = true;
“ignoreWhite”-XML对象的一个属性:指定XML文档忽略空白,因为在XML中一个换行在FLASH中会被视为一个节点

doc.onLoad = function(success){}
“onLoad”-XML对象的一个方法.将会返回一个布尔值”true或false”.用来判断XML是否被成功加载.如果加载成功则会返回”true”,反之则返回”false”
此处为该方法使用了一个函数,其参数”success”用来贮存上述的布尔值

if(success){}
一个判断语句:如果加载成功(即success的值为”true”),则触发括号内的动作

trace(doc.childNodes[0].childNodes[0].attributes.name);
输出doc(此时”city.xml”中的数据已经包含到doc这个XML对象当中)这个XML对象的第一个节点下的第一个子节点的”name”属性值
childNodes-XML对象的一个属性,它的值的类型是数组型.XML的一个节点可以在FLASH中通过这个属性来表示其包含的数据.
由于FLASH中数组的长度计算是由”0″开始,所以我们XML文档中的第一个节点就存储在数组的”0″位置.而不是”1″
所以,我们取出XML文档的第一个节点-“”,就应该表示成这样”childNodes[0]”
同样,我们取出XML对象根节点(“”)下的第一个子节点(“”),就表示成doc.childNodes[0].childNodes[0]
相应的,取出第二个子节点:doc.childNodes[0].childNodes[1]
第三个子节点:doc.childNodes[0].childNodes[2]
(这一步中,需要涉及到FLASH中数组对象的使用原理)

在FLASH与XML的数据交互中,可能数据的表现是最难的一步.
针对上面数据表现方式,我们可以充分利用数组的便利性来做
假如已经获得一个XML对象”doc”

首先,我们将这个XML中使用到的数据转换为一个数组对象来表示
var myList:Array = doc.childNodes[0].childNodes;//直接将XML文档根节点下的的所有子节点放到一个数组中
trace(myList[0].attributes.name+”,”+myList[0].attributes.code+”,”+myList[0].attributes.pnum);//输出第一个”city”节点所有的属性值
trace(myList[1].attributes.name+”,”+myList[1].attributes.code+”,”+myList[1].attributes.pnum);//输出第二个”city”节点所有的属性值
trace(myList[2].attributes.name+”,”+myList[2].attributes.code+”,”+myList[2].attributes.pnum);//输出第三个”city”节点所有的属性值

输出结果:

上海,021,500000
北京,010,600000
浙江,057,1000000

/*以上完整的代码为*/
System.useCodepage = true;
var doc:XML = new XML();
doc.load(“city.xml”);
doc.ignoreWhite = true;
doc.onLoad = function(success){
if(success){
var myList:Array = doc.childNodes[0].childNodes;
trace(myList[0].attributes.name+”,”+myList[0].attributes.code+”,”+myList[0].attributes.pnum);
trace(myList[1].attributes.name+”,”+myList[1].attributes.code+”,”+myList[1].attributes.pnum);
trace(myList[2].attributes.name+”,”+myList[2].attributes.code+”,”+myList[2].attributes.pnum);
}
}
/*代码结束*/
为了在FLASH中其他的位置都能够访问到我们所需要的XML数据,我们可以将myList数组对象放置到上下文的任意位置
例如:

System.useCodepage = true;
var doc:XML = new XML();
var myList:Array = new Array();//预先建立一个数组对象用来放置XML节点数据,以便FLASH其他位置的代码都能够访问
doc.load(“city.xml”);
doc.ignoreWhite = true;
doc.onLoad = function(success){
if(success){
myList = doc.childNodes[0].childNodes;//当XML加载成功后对上文的myList数组对象进行赋值.
}
}

//使用一个按钮动作来获取数组对象中的一个CITY节点信息
btName.onPress = function(){
trace(_root.myList[0].attributes.name+”,”+_root.myList[0].attributes.code+”,”+_root.myList[0].attributes.pnum);
}
这样的写法当然还不满足我们一些复杂的需求,而且代码过冗长.
使用函数来返回我们需要的信息,应该是最正确的做法,我们来实现它
按下按钮时,向函数递交一个城市代码,返回城市名和人口信息

System.useCodepage = true;
var doc:XML = new XML();
var myList:Array = new Array();//预先建立一个数组对象用来放置XML节点数据,以便FLASH其他位置的代码都能够访问
doc.load(“city.xml”);
doc.ignoreWhite = true;
doc.onLoad = function(success){
if(success){
myList = doc.childNodes[0].childNodes;//当XML加载成功后对上文的myList数组对象进行赋值.
}
}

//函数开始
function getCityInfo(code){? //构建一个函数的写法是:function 函数名(参数){//脚本代码}
var cityName:String;//建立一个字符窜变量来存储城市名
var pepCount:String;//建立一个字符窜变量来存储居民数量
for(var i=0;i<myList.length;i++){
if(code eq myList[i].attributes.code){
cityName = myList[i].attributes.name;
pepCount = myList[i].attributes.pnum;
}
}
return “城市:”+cityName+”,人口:”+pepCount //返回一段文字表达信息
}

//函数结束

??? /*按钮的动作*/
btName.onPress = function(){
trace(getCityInfo(“010”));//输出函数的返回结果,(在函数的参数中提交城市代码-“010”)

使IE6中DIV(或其他容器)设置高度(height)为100%

当你在制作网页中用CSS定义一个DIV(或者其他容器,如table等…)的height:100%
在IE6中此定义无法达到预期纵向(y)100%显示效果时
以下方法可以帮你解决

首先请用CSS定义
body{height:100%}
此定义是为了让本身body就具有height为100%

然后
再定义你想让其达到高100%纵向满屏的DIV(或者其他容器)的父DIV(或者其他容器)
其高度亦为height:100%

注意加重字体所表达的意思

即:
你要定义一个DIV的高100%纵向满屏
那么请先将其上级的DIV的高定义为100%
上级有多少个DIV,你都要定义它们的高为100%
这样才能达到包含在里面的DIV的高为浏览器高100%的纵向满屏效果。

flash自适应浏览器窗口

单独一个flash实现自适应浏览器窗口,其实没有什么高超的技术与代码。

如果不想用js就用下面的方法。
只要在object里面设置height=“100%”就可以了。
有的人说这不行,那好把
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
去掉换成<html>应该就可以了。