今天在整理文件的时候发现到以前写过的电子贺卡... 但目前因为个人的服务器空间有限, 所以就改了一下以减少暂用空间, 在这里就简单的教大家, 但由于我个人是喜欢使用php, 在这里提过的后台例子也是使用php... 有爱好的朋友就以自己喜欢的后台来编写吧 还是先来看個
簡單的例子吧 :
http://www.super-tomato.com/Ecard/ 首先, 大家先制作出自己的贺卡, 然后分成两个文件... 一个是寄贺卡人填写的介面, 另外一个就是收到贺卡人所观看的部分 那么就先来弄填写贺卡的部分吧, 在场景添加输入文本和按钮之后就在第一帧输入:
post.onPress = function() { //按钮按下所触发的事件
if (receiver.text.length<2 || email.text.length<10 || sender.text.length<2 || subject.text.length<2 || context.text.length<10) { //依照个人喜好判定输入文本的文字长度
status.htmlText = "<font color=''''''''#FF3300''''''''><b>错误 : 请输入所有空格</b></font>"; //达不到长度就显示错误的讯息
} else {
loader = new LoadVars(); //使用LoadVars传递资料到后台
loader.receiver = escape(receiver.text); //使用escape转换成2字节的16进制编码
loader.email = email.text; //email没中文字所以不必
loader.sender = escape(sender.text);
loader.subject = escape(subject.text);
loader.context = escape(context.text);
loader.onLoad = function(success) { //连接到后台
if (success) { //成功接收到后台传回来的讯息
if (loader.result) { //假如后台传递的讯息为true
gotoAndStop("success"); //跳到成功传递的标签去
} else { //假如传递回来的讯息为false
status.htmlText = "<font color=''''''''#FF3300''''''''><b>错误 : 请再尝试</b></font>";
}
}
delete loader; //删除LoadVars以免占用资源
};
loader.sendAndLoad("send.php", loader, "POST"); //使用sendAndLoad传送和接收资料
gotoAndStop("sending"); //跳到传送的标签
}
};
stop();
弄好寄件者的Flash部分, 那么接下来就到后台寄出电子邮件的部分了
<?
$Today = date("Y-m-d"); //取得今天的日期 $title = "您收到一份来自 $sender 的贺卡"; //在收件者信箱中看到的主题
$Message = "$receiver,<br><br>$Sender 于 $Today 寄了份贺卡给您. <br>请点以下的连接观看贺卡:<br><br> <a href=\http://www.super-tomato.com/Ecard/view.php?Subject=$subject&Context=$context&Receiver=$receiver&Sender=$sender>$Sender 的贺卡哦</a>"; //信件内容, 包括观看的网址(当中附加变量传递资料), 不使用资料库储存的要害就是这里了
if(mail($receiver." <".$email.">",$title, $Message, "From: Super-Tomato <support@super-tomato>\nMIME-Version: 1.0\nContent-Type: text/html; charset=\"iso-8859-1\"\n")) { //使用PHP的mail()函数判定是否寄出邮件
print "result=true"; //成功寄出就回传给Flash的值为true
} else {
print "result=false";
}
?>
接下来就到收件者所连接观看的Flash部分, 在当中制作动态文本(收件者, 发送者, 主题和内容)... 不要设定动态文本的实例名, 改用变量名
(Receiver, Sender, Subject, Context),
再来只要在第一帧使用
System.useCodepage = true;
就可以了 发布这个文件为html之后, 使用记事本修改当中的代码, 如下:
<? $value = "view.swf?Subject=$Subject&Context=$Context&Receiver=$Receiver&Sender=$Sender"; //这里取得传递过来的变量, 然后预备传送到Flash ?> <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>View Ecard</title>
</head>
<body bgcolor="#ea9800">
<table width="100%" height="100%"><tr><td align="center" valign="middle">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="700" height="420" id="main" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="<? print $value; ?>">
<param name="quality" value="high" />
<param name="bgcolor" value="#ef9c00" />
<embed src="view.swf" quality="high" bgcolor="#ef9c00" width="700" height="420" name="main" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</td><tr></table>
</body>
</html>
这样就完成了啊 :)