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>