FLASH 哪位大虾能帮我设定一个flash flash小游戏戏的时间限制 急...

| | flash常见问题集锦,很适合新手哦
(转载)
收藏于
2011-01-16
阅读数:
公众公开 如何加载一个SWF文件并控制其位置等相应属性… #8230;
新建一个空地MC,将它放在主场景中,实体名改为OK,写AS:
loadMovie("test.swf", "_root.ok");
控制这个MC的位置,大小等相对属性(Property)就会影响调入SWF的位置和大小。
setProperty ("mc", _xscale, "****");
setProperty ("mc", _yscale, "****");
setProperty ("mc", _x, "****");
setProperty ("mc", _y, "****");
setProperty ("mc", _Alpha, "****"); ............ 方法二:加载到影片剪辑中位置的调整
on (release) { _root.createEmptyMovieClip("abc", 1); loadMovie("01.swf", "abc"); onEnterFrame = function () { with (abc) { _x = 100; _y = 50; _width = 400; _height = 300; } }; delete onEnterFrame;
红色按钮上的AS:我们还是用unloadMovie()来进行卸载.代码如下:
on(release){ unloadMovie("abc")
}//这里和方法一中不一样,是因为我们新创建的MC的名称为"abc"
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
如何倒续播放?
正确***
在最后一帧上下命令:
stop();
function back() {
if (_currentframe1) {
prevFrame();
} else {
clearInterval(ck);
ck = setInterval(back, 1000/12);//如过的你帧频是12的话
忘记了,还要在第一帧上下命令,gotoAndStop(20);
//我的代码要简单些,只需将as复制到场景即可
onEnterFrame = function () {
if (_currentframe == 1) {
this.lbPlay = true;
if (_currentframe == _totalframes) {
this.lbPlay = false;
if (this.lbPlay) {
play();
} else {
prevFrame();
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
怎样控制MC的播放次数?
正确***
在第一帧上下命令:mc是这个影片剪辑的名字
var i = 0;
mc.onEnterFrame = function() {
if (i=3*mc._totalframes) {
this.stop();
//这里可以用gotoAndStop();,循环三次后随便你停在哪一帧
delete mc.onEnterFrame;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
全屏:fscommand("fullscreen" ,"true");
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
我在作一个点歌系统的flash界面.就是ktv那种.然后在控制音量那里有点小问题我不懂,所以想请高手帮忙,有钱拿地,呵呵,就是单量控制,有上下两个箭头,如果按上箭头,有一个代表音量大小的颜色条就会涨百分之五,按一下涨百分之五,按二十下就涨百分之百.按下箭头反之,总是就是用颜色条代表音量大小,就这点小问题.我想在flash可以实现吧,请联系本人:173760705 可以实现,很简单,只要建立一个声音对像即可
mySound=new Sound();
mySound.attachSound("xw");//声音属性中的链接名为xw
mySound.start();//开始播放
加按钮
on(release){
mySound.setVolume(mySound.setVolume()+5);
减按钮
on(release){
mySound.setVolume(mySound.setVolume()-5);
正确***
tjficadmin说的有问题,而且没有颜色条的变化;修改一下,把你的颜色条转化为MC,确保该MC的注册点在最底部,在场景中名字为mc。
加按钮
on(release){
mc._yscale+=5;
mySound.setVolume(mySound.getVolume()+5);//括号里面的不是setVolume,而是getVolume.
减按钮
on(release){
mc._yscale-=5;
mySound.setVolume(mySound.getVolume()-5);
} 建立和加载声音和tjficadmin一样
###################################################################################################3
FLASH弹出窗口 在HTML页面里写上JS代码 然后在FLASH里调用 下面是一个详细的步骤
1. 将"Get URL"指令指派至某个按钮或关键帧
2. 在"URL"空白栏中填入打开新窗口的URL链接,将下列信息正确地填入空白栏内
javascript:openNewWindow('abc.html','thewin','height=400,width=400,toolbar=no,scrollbars=yes')
3. 选择"File"(文件)>"Publish Settings"(发布设置)
4. 选择"Formats"(格式)一栏,将"Flash"和"HTML"两选项选中
5. 选择"HTML"一栏,从"Templates"的弹出菜单栏中选择"Flash Only (Default)"
6. 选择"Publish"按钮。这将创建Flash电影的一个SWF文件以及可嵌入网页中的HTML代码,请将SWF文件以及HTML代码全部保存至与FLA文件相同的目录下。
步骤二:向HTML网页添加JavaScript脚本
HTML网页必须添加JavaScript函数,以便接收"Get URL"指令信息。JavaScript函数是包含在HTML网页中的一段脚本代码,可以接收并执行某项指令。修改HTML网页的具体方法如下:
1. 在Dreamweaver或其它HTML编辑器内打开HTML网页。也可以使用象Notepad或SimpleText这样的文本编辑器。
2. 复制下列代码
< cript language="JavaScript"
function openNewWindow(URLtoOpen, windowName, windowFeatures) { newWindow=window.open(URLtoOpen, windowName, windowFeatures); }
/script
请将上述代码完整地复制到HTML源代码的head和/head置标符之间。此函数就可以接收到Flash发出的指令并创建新窗口。Flash指令会把关于打开窗口的一些参数发送至浏览器,这些参数信息包括窗口大小,是否包含工具条以及窗口的链接地址。
3. 向HTML源代码的EMBED置标符内添加下列参数
"swLiveCo ect=true"
此参数可以放在EMBED置标符内的任意位置,但最好放置在"width"和"height"参数之后。
注:此步骤非常关键,它可以允许Flash电影与JavaScript代码进行交互联系。
4. 在上面的参数下再添加下列代码:
"NAME=yourmovie"
请把"yourmovie"替换为实际的名称,该名称在object标签的ID参数中有显示。而"NAME"与你的SWF文件名一致,但请不要把swf文件的扩展名包括在内。
5. 保存所有对HTML文档的修改,并在浏览器内进行测试。 ###################################################################################
如何实现检验书写的邮件地址是否有@字符?
EMAILTEXT = email.indexOf("@");
if(EMAILTEXT=-1){
trace("请详细填写e-mail");
;//email为你在动态文本框的变量.
要将其内容放在按扭中并略加修改即可。 ----------------------------------------------------------------------------------------
怎样做一个flash按钮可以把网页设为首页啊?? 提问人:102332506 信誉:1 得分:0
发贴时间:2004-11-01 13:56:40 人气:102 本贴分值:10
怎样做一个flash按钮可以把网页设为首页啊??
求救!!!!!!!!!!!
正确***
在“设为首页”的按钮上加入以下代码:
on (release){
getURL("javascript:void(document.links[0].style.behavior='url(#default#homepage)');void document.links[0].setHomePage('http://home.cfe21.com/xbzg');", "_self", "POST"); }
不过,光这还不行,你还需要在发布swf的同时发布html,并且要在html文件中加入这样一句:
看看这个网页:
A HREF=Javascript:+/A
"+"号两边各加“ lt gt #8221;
再去掉"+"
错。。
这个才是正确的。。。 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra itional//EN" "
html xml ="
" xml:lang="zh-CN" lang="zh-CN"
meta http-equiv="Content-Type" content="text/html; charset=gb2312" /
title荆棘鸟/title
< tyle type="text/c "
.style1 { font-size: 12px; font-weight: bold;
.style2 {font-size: 14px}
body { ackground-color: #FFFFFF;
a:link { color: #000000; text-decoration: none;
a:visited { text-decoration: none; color: #000000;
a:hover { text-decoration: none; color: #FF0000;
a:active { text-decoration: none;
< ody
!-- 影片中使用的 URL--
a href="javascript:window.external.addFavorite('http://liniao.go.nease.net/index.htm','荆棘鸟')"/a
a href="
!-- 影片中使用的文本--
table width="726" border="0" align="center" tr tdobject cla id="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="
" width="730" height="110" align="top" < aram name="allowScriptAcce " value="sameDomain" / < aram name="movie" value="jingjiniao.swf" / < aram name="quality" value="high" / < aram name="bgcolor" value="#FFFFFF" / embed src="jingjiniao.swf" quality="high" bgcolor="#FFFFFF" width="730" height="110" align="top" allowscriptacce ="sameDomain" type="a lication/x-shockwave-flash" plugi age="
" /> /object object cla id="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="
" width="730" height="25" < aram name="movie" value="1.swf" / < aram name="quality" value="high" / embed src="1.swf" quality="high" plugi age="
" type="a lication/x-shockwave-flash" width="730" height="25"/embed /object object cla id="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="
" width="730" height="600" < aram name="movie" value="zhuye.swf" / < aram name="quality" value="high" / embed src="zhuye.swf" quality="high" plugi age="
" type="a lication/x-shockwave-flash" width="730" height="600"/embed /object table width="730" border="1" align="center" cellpadding="0" cell acing="0" bordercolorlight="#000000" bordercolordark="#FFFFFF"
bgcolor="#8985E0" cla ="border" bordercolour="#0000FF" tbody tr cla ="title" align="middle" height="22" td width="836" bgcolor="#8985E0"div align="center" cla ="style1"font face="楷体_GB2312"|a onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://liniao.go.nease.net/index.htm');" href="
"设为首页/a> am |a href="javascript:window.external.addFavorite('http://liniao.go.nease.net/index.htm','荆棘鸟')"加入收藏/a> am |&am a href="#" onclick="
" title=" /tr tr cla ="tdbg" valign="bottom" align="middle" height="20" td height="94" valign="top" bordercolor="#000000" bgcolor="#8985E0"div align="center" < cla ="style2"本站大部分文章摘自网上 < r / 站长:荆棘鸟 QQ:65884452 E-mail:
/div div align="center" 你是本站的第 < cript src="
个访问者/ gt; /div /td /tr /tbody /table/td /tr
< cript src='http://ad.nease.net/ elect.js'/script
--------------------------------------------------------------------------------
彩旦组建: 今天来看看Menu组件,这个东东是专业版特有的,所以要多看看帮助,当然,也要多点口水,先来看帮助中的一个例子。 下面为用Menu组件建一个应用(按帮助翻译,由于英语不行,有错误请指正)。 1、选择文件--新建来创建一个flas***档。 2、从组件面板中拖一个Menu组件到场景中,并删除它,到时我们从库中来创建。 3、从组件面板中拖一个Button组件到场景中,单击按钮来激活Menu,在属性面板中给按钮实例命名:commandBtn。 4、从组件面板中拖一个Label组件到场景中,在属性面板中给Label实例命名:Label。 5、在Action面板中输入以下代码。
var listener = new Object();
listener.click = function(evtObj) { var button = evtObj.target; if (button.menu == undefined) { // 建立一个Menu组件 button.menu = mx.controls.Menu.createMenu(); //增加菜单项 newItem = button.menu.addMenuItem("闪客学堂"); newItem.addMenuItem({label:"在线教程"}); newItem.addMenuItem({label:"常见问题"}); newItem.addMenuItem({label:"组件下载"}); button.menu.addMenuItem("闪客影院"); button.menu.addMenuItem("闪酷地带"); button.menu.addMenuItem("帝国加游站"); //使用组件事件侦听器,用change事件 var changeListener = new Object(); changeListener.change = function(event) { var item = event.menuItem; trace("Item selected: "+item.attributes.label); Label.text = item.attributes.label; //把菜单项赋值给Label组件 }; button.menu.addEventListener("change", changeListener); } utton.menu.show(button.x, button.y+button.height);
commandBtn.addEventListener("click", listener);
commandBtn.label = "闪客帝国";
commandBtn.setSize(90, 30); 当然,这只是使用Menu的一种方法,在帮助中,介绍了四种方法,有兴趣的朋友可看看。 6、测试,点击看看效
源文件下载 通过前面的例子想必对这个组件有个大致的了解了吧,现在我们仔仔细细的来学习下这个好东东吧,look下面。 1、增加一个菜单
myMenu.addMenu(initObject); 2、创建一个菜单
Menu.createMenu(parent, mdp); 3、菜单出现的位置
myMenu.show(x, y); 帮助中是用xml对象来建菜单的,我们换种方法 打开flash,新建一文档,双击组件面板中的Menu组件,然后到场景中Delete这个组件,到帧中输入下列代码:
var myMenu = mx.controls.Menu.createMenu();
//新建一菜单
myMenu.addMenuItem("zjs35");
//加一个项目
myMenu.show(100, 20);
//菜单出现的x,y坐标,以左上角为准 运行,看看结果 如果我们要建很多菜单,就用数组吧
var a=["laohe...","beebee...","zjs35..."];
//一级菜单
var a1=["年龄","姓别","爱好"]
//二级菜单
var myMenu = mx.controls.Menu.createMenu();
//创建
for(var n=0 a.length ++){ myMenu1=myMenu.addMenuItem(a[n]); //建立一级菜单 for(var j=0;j a1.length;j++){ myMenu1.addMenuItem(a1[j]); //建二级菜单 }
myMenu.show(100, 20);
//菜单的位置 运行看看,不错吧
----------------------------------------
flash留言本
最近我把自己制作的一个 Flash 留言板放到了爬行榜上,引起了大家不小的兴趣,很多朋友纷纷要求提供原始代码,现在,大家已经可以下载到原始代码了,但是,我想,还是要配合一个教程好一些。
  (没有概念的朋友请看这个演示… #8230;点这里)
  于是,抓紧时间,马上开始写。计划是分成两部分:一部分是ASP部分的分析,另一部分是在 Flash 中的操作。
  下面,我们先来看看数据是怎样经过ASP处理的。
  这个留言板一共有三个文件——Flash SWF 影片文件、ASP程序和留言板数据文件(文本文件)。
一、数据的排列方式
  由于实在没有什么特殊的要求,所以,没有必要使用数据库,只要把留言板的数据格式确定好就可以了,于是,我们确定如左边图显示的这种文本结构。在实际应用中,这个文件叫做 guest.txt。
  这种结构很简单,第一条数据代表一共有多少条留言,中间部分就是内容,最后一个标记着文本文件的结束。
  我来具体解释一下:各个数据都以 &am 号开头,因为这样 Flash 在读取的时候就会把它当成一个变量。现在“ am total=2”被读入以后,Flash 就会把影片中的 total 设置成 2。
  中间部分也是一样,第一个留言的三个部分是 sub1 name1 text1,而第 n 个留言的三个部分就是 su namen text #8230 #8230;
  最后的这个“ am eof=true”好象意义不大,但是其实它主要是作为标志来用,当 Flash 在读取文件的时候,肯定要显示“正在读取中… #8230 #8221;等内容,那么怎样才能判断是否已经完全读取了呢?当然是在“ am eof=true”被读取以后(也就是在 Flash 中 eof = true),才算完成。这个时候,我们就可以告诉大家:“完成”了。否则,动画就会循环显示“正在读取中… #8230 #8221;,直到完成。
二、ASP完成了什么
  那么,就该我们的ASP程序了,其实它完成的是最基础的工作:读取和写入,其它的功能,比如显示、浏览方式等等都还是由 Flash 完成的。
  首先,参数要全部读取进来(这些数据应该是从 Flash 传来的)。
subject = request("sub")
name = request("name")
text = request("text")
action = request("action")
  先看它的读取功能。本来我们设置了 action=read 的时候去读 guest.txt,但是发现:
  (注意:值得注意)尽管在 Netscape 中已经通过了,可是在 IE 中我们却遇到了挫折,原本不应该受 Cache 左右的 a 程序竟然不听使唤。每次用户发了新留言以后,死活也不给刷新了。没有办法,我们只得改变战术,在 Flash 中给了 action 一个随机的参数,才解决了这个问题。
  因此,您现在看到的程序是只要有不是“add”的参数就会去执行读的操作。
if (action "add") then
  set fin = Server.CreateObject("Scripting.FileSystemObject")
  filepath = Server.MapPath("guest.txt")
  set f = fin.OpenTextFile(filepath)
  (把文本文件 guest.txt 中所有数据读入 buf)
  buf = f.readAll
  (将所得结果全部返回给 Flash)
  re o e.write(buf)
  f.close
  看见了,读取其实很容易,那么下面看写入的:
if (action = "add") then
  (先读取文件)
  set fin = Server.CreateObject("Scripting.FileSystemObject")
  filepath = Server.MapPath("guest.txt")
  set f = fin.OpenTextFile(filepath)
  (先读入第一行,因为第一行有总的个数)
  line = f.readline
  (将 &am total=n 中的 n 提取出来,并转成整型)
  total = int(mid(line,8))
  (其余内容读入缓冲区)
  buf = f.readAll
  f.close
  set fout = Server.CreateObject("Scripting.FileSystemObject")
  (写文件之前先锁定)
  A lication.lock
  filepath = Server.MapPath("guest.txt")
  set f = fout.CreateTextFile(filepath,TRUE)
  (总数添加一个)
  total = total + 1
  (将新数据写入文件)
  f.writeline "&am total="&am total
  f.writeline "&am ub"&am total&am "="&am ubject
  f.writeline "&am ame"&am total&am "="&am ame
  f.writeline "&am text"&am total&am "="&am text
  (将缓冲区的老数据写回)    f.write buf    f.close    (解开锁定)    A lication.unlock    (返回成功写入的标志)    re o e.write("&am added=1")
  相信有基础的闪客一定会很快就弄明白的。这里做一点说明:
  (1)buf 在这里很关键,它保存着目前留言板上的所有信息。我们要做的其实是:把老信息保留,然后添加入新的信息,再把老信息加在后面。就这样,不断的添加,生成大的留言板数据文件。这是程序的主要功能。
  (2)A lication.Lock 和 A lication.Unlock 是保护文件的方法,因为有可能出现大家一起读写一个文件的情况,会使数据丢失。使用它们就可以避免这种现象。
  (3)total = int(mid(line,8)) 是简单的 VB 语句,因为 line 读近来以后应该是“ am total=12”或者“ am total=71”什么的,我们需要的是 12 和 71,但是 Flash 需要“ am total=xxx”,所以必须要这样做,使用 mid() 函数可以帮助我们得到“=”号后面的数据。int() 则把得到的字符型数据转换成整型,使之可以进行运算。
  好了,待续。下一部分将是 Flash 里面的手脚。哈哈!
------------------------------------------------------
flash留言本下
Flash 里面的手脚
  完成了ASP部分,我们可以比较蹋实的来做FLASH里面的内容了。
  ASP部分完成了数据的读取和写入,而这些资料进入FLASH以后,则需要进行一定的排列和整理。这些工作在ASP里面做反而有些烦琐,而在FLASH里面来完成,则容易得多了… #8230;
  下面,看看我们的 timeline 吧:
  上面是我们的头一部分,也就是读取和写入的关键部分。我们可以通过阅读程序来了解整个过程。
  在 reading 段,程序是这样的:
(先初始化数据)
Set Variable: "eof" = "false"
Set Variable: "total" = 0
Set Variable: "added" = 0
Set Variable: "sub" = ""
Set Variable: "name" = ""
Set Variable: "text" = ""
Set Variable: "backmethod" = 0
(产生随机数)Set Variable: "r" = Random (65500)
(通过随机参数调用程序,理由见上一部分)
Load Variables ("
="&am r, "")
Set Variable: "temp" = "正在读取信息中… #8230;"
  要说明的是:temp 是文本框变量名,temp 等于什么,屏幕上就显示什么。
  大家看:紧接着程序向下走,经过 read(只是一个标记),继续向下到达了一个 action keyframe。
If (eof ne "true")
Go to and Play ("read")
  这就是我们前面讲过的,直到读完文件,不然总是返回 read 去显示“正在读取信息中… #8230 #8221;。如果读取完成,也就是“eof eq "true"”了的话,执行下面一个关键语句。
Set Variable: "total" = Su tring ( total, 0, Length ( total ) - 2 )
  如果您懂得程序,就不难发现:我们通过这个语句把取得的 total 值截去了两个字节——如果不这样做的话,您会发现返回的 total 竟然有两行,我们这样做是为了取得正确的数值。尽管 Flash 的数据类型不甚讲究,但是这种错误还是会出现的。
  好了,下面到了我们的 main 了,显示数据总数:
Set Variable: "temp" = "信息读取完成,共有信息条目数:"&am total
  总数显示的页面下面会有两个按钮,一个是“查看”,另一个是“添加”,我们先来看简单的那个:“添加”。
  i ert 只是停留在一个添加 frame 上,而当用户输入了信息以后,真正的提交工作是在 do_i ert 完成:
If ((sub eq "") or (name eq "") or (text eq ""))
 Go to and Play ("error")
 Set Variable: "temp" = "正在向服务器添加数据… #8230;"
 (action=add)
 Load Variables ("
", "", vars=POST)
 Go to and Play ("wait2")
  很简单的一个提交,把信息传送到ASP程序去,然后转到 wait2 去等待结果。至于 error,不过是一个出错 frame 罢了,不用关心。
  wait2 等待成功,后面的 action 继续循环,直到知道写入成功为止。到此,添加的工作就完成了。画面上会显示“数据成功写入!”,并且有按钮带用户回到 reading 去。
If (added 1)
Go to and Play ("wait2")
Set Variable: "temp" = "数据成功写入!"
  下一个部分,该是“显示”功能了。
  在做这部分的时候,我有点来了脾气,想弄得更好一些,所以,做了一些“多余”的工作。在我写这篇文章的时候,站点上测试的留言已经有几百条了,而且永远不会减少。但是,我当时还是根据自己的想法,把显示功能做了强化:少于6条留言的时候有一种处理,多于6条的还有一种处理。嘿嘿,只有发头几条留言的人才会发现:原来是有一些区别的… #8230;哦。其实这个功能真的很多余,完全可以通过程序在后面来解决,现在还给大家增添了读程序的负担,实在对不起各位闪客了。
  所以,view 的程序是这样开始的:
Set Variable: "cur" = total
If (total = 6)
Go to and Stop ("view6")
Go to and Play ("view6p")
   我们先通过少于等于6条留言的处理,来展示是如何实现显示留言功能的:
Set Variable: "i" = 6
Set Variable: "current" = cur
Loop While (current 0)
 Set Variable: "t"&am i = eval("sub"&am current)
 Set Variable: "current" = current - 1
 Set Variable: "i" = i - 1
End Loop
  我通过简单的方法来显示这小于等于6条留言,而且不用显示有翻页功能的按钮。要说明的是:t6 t5 t4 t3 t2 t1 是按从上到下排列的6个文本框,我们可以轻易的为他们赋值。而在这6个家伙的下面,则有6个长条的按钮——就是我们要按下去看详细内容的那些按钮,它们被点击以后,会带着 b=6 5 4 3 2 1 这6个不同的数值转向 viewdetail。
  viewdetail 其实也只是一个中间环节,它主要是来判断用户按下的按钮是否是无效的,如果有效,那么就转向真正的显示环节——viewdetail_now:
If (cur = 6)
 If (b = (6 - cur))
  Go to and Play ("nosuchitem")
 Else
  Set Variable: "load" = b - 6 + cur
  Go to and Stop ("viewdetail_now")
 Set Variable: "load" = b - 6 + cur
 Go to and Stop ("viewdetail_now")
  关键的地方到了,看看 viewdetail_now 是怎样显示的吧:
Set Variable: "new_sub" = eval("sub"&am load)
Set Variable: "new_name" = eval("name"&am load)
Set Variable: "new_text" = eval("text"&am load)
Set Variable: "new_sub" = Su tring ( new_sub, 0, Length ( new_sub ) - 2 )
Set Variable: "new_name" = Su tring ( new_name, 0, Length ( new_name ) - 2 )
Set Variable: "new_text" = Su tring ( new_text, 0, Length ( new_text ) - 2 )
Set Variable: "the_sub" = new_sub
Set Variable: "the_name" = new_name
Set Variable: "the_text" = new_text
  我们先把每个数据做了类似 total 的处理,然后将他们赋给相应的文本框,显示就完成了。
  那么,多于6条留言是什么样的呢?我们给它加上了两个按钮,可以用来上下翻页的。他们的 action 其实很简单:
(上按钮)
On (Release)
 If (cur total)
  Set Variable: "cur" = cur + 6
  Go to and Play ("view6p")
 End If
(下按钮)
On (Release)
 If (cur 6)
  Set Variable: "cur" = cur - 6
  Go to and Play ("view6p")
 End If
  在多于6条留言的处理上,我们还加上了一些内容:
Set Variable: "i" = 6
Set Variable: "backmethod" = 1
Set Variable: "current" = cur
Loop While (i 0)
 Set Variable: "t"&am i = eval("sub"&am current)
 Set Variable: "current" = current - 1
 Set Variable: "i" = i - 1End Loop
  backmethod 是专门为了返回而设置的。当信息很多的时候,用户看完一条,返回的时候却又返回到最前面,那可真的是大煞风景了!所以,我们增加了这个 backmethod,来告诉程序,到时候要返回到用户来的那个页面。(其实,如果把少于等于6条和多于6条的程序合并的话,就不需要这个了。)
  我想,大概的意思我已经都讲到了,具体程序和按钮以及 MovieClip 之间的关系,必须要看原始的 TimeLine 才能完全领会。其实,这篇小文章,还只是一个介绍性的东西吧!
  好了,祝您早日写出自己的论坛!(说了半天很麻烦,其实真正写程序的时候很快啊。)
 [原创]FLASH对联广告的制作
1、首先在FLASH中制作一100*300的动画,内容自定。在场景的右上角(右下角也行,位置自己定)做一个小关闭按钮,形式大小不定!
2、点击按钮-右键-动作:
on (release)
{ getURL("FSCommand:", "");
3,到此FLASH中制作的内容完成,将其导出成swf格式,如将此动画放到网站的images下面,取名为duilian1.swf
4、FLASH对联广告需用到一个JS文件,可以取名为duilian.js,内容如下:
function winload()
huashuolayer2.style.top=96;
huashuolayer2.style.left=5;
huashuolayer3.style.top=96;
huashuolayer3.style.right=5;
if(document.body.offsetWidth800){
document.write("div id=huashuolayer2 style='position: a olute;visibility:visible;z-index:1'EMBED src='images/duilian2.swf' quality=high WIDTH=100 HEIGHT=300 TYPE='a lication/x-shockwave-flash' id=sinadl/EMBED/div"
+"div id=huashuolayer3 style='position: a olute;visibility:visible;z-index:1'EMBED src='images/duilian1.swf' quality=high WIDTH=100 HEIGHT=300 TYPE='a lication/x-shockwave-flash' id=sinadl/EMBED/div");
} winload()
在这段代码中只要改动的是两个FLAS***的路径,一个是duilian2.swf,一个是duilian1.swf,如果两上对联广告一样的,那么这两个路径也就一样!
5、调用页面的代码分为如下两句:
< cript language="JavaScript" src="images/duilian.js"/script
SCRIPT event=FSCommand() for=sinadl language=JavaScript
huashuolayer2.style.visibility='hidden';
huashuolayer3.style.visibility='hidden';
/SCRIPT
注意,第二句一定要加,不加不能实现按钮关闭的效果
---------------------------------------------------------------------------
我做了一个动态文本框、一个输入文本框和一个提交按钮,我想让输入文本的内容,显示在动态文本框中,我要怎么实现这个效果。。。
请各位指教!谢谢。。
假设你的动态文本框的实例名称为dy_text,变量名也是dy_text(别忘了输入变量名了),输入文本框的实例名称为i ut_text
那么在你按钮的事件里加代码:
on(release)
dy_text.text=i ut_text.text;
就OK啦! ----------------------------------------------------------------------------
多个MC的跟踪怎样做呀. 也可以使用startdrag命令呀
假设将推翻了拽影片剪辑实例MC0,同时跟随光瓢移动的还有10个影片剪辑实例,分别为MC1,Mc2,....
,MC10,以下脚本程序就可以实现多个影片剪辑实例同时跟随光瓢移动的动画效果,但是需要说明的是主时间男同事 必须存在2个关键帧。
startDrag("mc0");
x0=getProperty("mc0",_x);
y0=getProperty("mc0",_y);
for(i=1;i=10;i++)
setProperty("mc"+i,_x,x0+5*i)
setProperty("mc'+i,_y,y0+5*i)
可以去试一试呀
------------------------------------------------------------------------------------------
求助~急~!关于flash按钮调入框架的问题~!
今天做了一个页子,但是按钮链接问题一直无法解决。
我的叶子中有一个嵌入式网页(名称是home),在父页中我做了一个flash导航条,希望点击按钮后将目标页载入home框架中,但因水平有限,一直未能如愿,头都要大了~!
求助各位大虾帮帮忙啦~!我的按钮究竟该加什么样的命令呀~!
我实践过了,如果你的 网页上 的部分没有问题,则在 flash导航条 的 按钮 上加 AS:
on (release) {
getURL("index.htm", "home");
得到了你要的效果!!
------------------------------------------------------------------------------------------------?
求教!在flash中读取文本文件
我制作了一个职员公布栏,使用on (release) {loadVarablesNum("职工1.txt",0) }这个语句在动态文本里调用记事本文件"职工1.txt"中的内容.我已经将该文件和flas***件放在同一文件夹下."职工1.txt"文件中的内容如下"&am ame=张强
&am ex=男
&am age=26"
可我无论怎么做,都无法调用到这个"职工1.txt"文件中的内容.我查阅了一下资料,说我的记事本文件必须用MIME格式书写,请问如何书写才是MIME格式的啊?我的问题是不是出在这里呢?请各位大侠赐教啊~ 不胜感谢!!! 正确***
把记事本另存为 编码:UTF—8 那一项,另外用“ am #8221;来继续下一个变量的时候不要有空格和回车之类的,紧接着写就是。 ----------------------------------------------------------------------------------------------
在FLASH按钮上实现“设为首页”和“加入收藏夹”的功能
正确***
设为首页:
on (release) {
getURL("javascript:void(document.links[0].style.behavior='url(#default#homepage)');void document.links[0].setHomePage('http://www.flashempire.com/');", "_self", "POST");
加入收藏夹:
on (release) {
getURL("javascript:void window.external.AddFavorite('http://www.flash8.net','闪吧');", "_self", "POST");
---------------------------------------------------------------------------------------------
怎样利用AS实现物体360度旋转? 提问人:netsuper 信誉:0 得分:0
做一个MC,命名为“MC”,在帧上加入以下代码:
MC._rotation++
将帧延长至两帧,测试。。。
-----------------------------------------------------------------------
如何用as实现图片从模糊变清晰
设置属性的透明度就可以了
用按钮来按制mc的透明度
on(release){
mc._alpha-=10//mc是影片剪辑的实例名称
} --------------------------------------------------------------------------------------------------
如何在Flash中打开一个定制的浏览器新窗口
on (release) {
getURL("javascript:window.open('1.htm','窗口名称','width=540,height=600,top=40,left=180,scrollbars=yes'); void(0);");
-----------------------------------------------------------------------------------------------------
关于播放窗口的问题
1.请问如何将flash的播放窗口固定大小,无论是最大化或右键中的放大缩小均不影响我初始画面的大小。
2.另右键菜单如何隐藏?请高手解答详细些,小弟刚入门有些东西虽然有***但还是难以理解,谢! 正确***
回答1:在第一贞加AS:
         fscommand("allowscale",false);
回答2:在第一贞加AS:
         fscommand("showmenu",false);
-----------------------------------------------------------------------------------------------------
怎样在flash中固定大小的范围内播放外部的swf文件?
主文件 01.swf 1024*768
要播放的文件 02.swf 1024*768
怎样在主文件中划定一个区域,如320*240,并在这个区域中播放外部的02.swf?
你可以在01文件中新建一MC,把02.swf装载进来后再进行以下判断:
如果MC的宽大于320,则使其宽等于320
如果MC的高大于240,则使其宽等于240 怎样判断?
我用loadMovie("02.swf",_root.mc2);加载后可以显示动画,但加上下面的参数后
mc2._x=50;
mc2._y=100;
mc2._width=320;
mc2._height=240;
就没有任何显示了?
为什么? 可以用FLASH 中提供的组件啊,如:
你在场景中放一个LOADER组件,可以将另外的 SWF 或 JPEG 文件导入你现在做的FLASH中
查看起属性:
autoload---true自动加载/false则不自动加载;
contentPath---现在你要加栽的 SWF 或 JPEG,加栽的文件要和你现在做的FLASH放在同一文件夹里;
scaleContent---true是让要加栽的 SWF 或 JPEG画面画面大小受LOADER组件长宽控制/ false是LOADER组件长宽根据SWF 或 JPEG画面大小变化
当然还可以用其他的组件 和 方法!!
----------------------------------------------------------------------------------------------------------
在电影中如何控制MC的速度?
在帧上加your_mc._x+=5;试试!
------------------------------------------------------------------------------------------------------------
怎样控制一开始播放就全屏幕
怎样控制一开始播放就全屏幕;用什么命令?
多谢!! fscommand("fullscreen", "true"); [size=20][color=red]字体探索测试![/color][/size] fscommand("fullscreen", "true"); ----------------------------------------------------------------------------------------------------------------
这代码是不是平抛运动,请教高手
onClipEvent (load) {
_x=100;
vx=Math.cos(radian)*v;
vy=Math.sin(radian)*v;
onClipEvent (enterFrame) {
_x+=vx;
_y+=vy;
这段代码是不是做平抛运动的物体?
还有他的速度v,加速度a,的单位是怎么定的,谢谢告之 正确***
不仅仅是平抛运动。。。
这是一段通用代码。。。
当radian=0时,才是平抛。。。
如果radia gt;0,就是上抛。。。
速度v的单位是取场景默认的单位。。
不过这段代码的v初始值过大效果不明显,改成这样,则效果好了许多:
因为是模拟,所以无关知识的正确性。。。
onClipEvent (load) {
_x=100;
radian=0
a=0.98;
vx=Math.cos(radian)*v;
vy=Math.sin(radian)*v;
onClipEvent (enterFrame) {
_x+=vx;
_y+=vy;
} 这也是一个抛体运动
帧1:stop();
s0 = getProperty (_root.k,_x);
p0 = getProperty (_root.k,_y);
vx = 20;
vy = 50;
帧2:t = t+0.5;
x = vx*t;
y = vy*t-(4.9*t)*t;
setProperty(_root.k, _x, s0+vx*t);
setProperty(_root.k, _y, p0-(vy*t-(4.9*t)*t));
帧3gotoAndPlay(2);
--------------------------------------------------------___________________-----------------------------.
向四周发射光芒的循环动画,“AS”应该怎样写?
正确***
//创建一个电影剪辑star_mc,并且使它具有动画效果,如运动的彩条,做好后放入场景,在帧中加入下面代码。(两种不同的效果)
for (i = 1; i = 50; i++)
star_mc._rotation = random (360);
duplicateMovieClip ("star_mc", "star_mc" + i, i);
}//这是一种烟火效果
var n = 50;
onEnterFrame = function ()
{ star_mc._rotation = random (360);
duplicateMovieClip ("star_mc", "star_mc" + n, n);
};//这是一种放射效果
> gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt;.
求教如何删除或停止function
tracker=function(){
trace(x);
setInterval(tracker,100);
求教如何删除或停止"tracker"这个function. 正确***
首先说明一点,你这个是死循环!可以考虑给它加一个循环条件;比如让x到20的时候停下,就可以用
tracker = function () {
if (x=20) {
trace(x); //x=20即为循环条件
setInterval(tracker, 100);
另外,setInterval()函数也可以用clearInterval()函数来停止
> gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt;
怎样让元件跟着鼠标走呢?
onClipEvent(enterFrame){
_x=_root._xmouse;
_y=_root._ymouse;
} onClipEvent (load) {
startDrag(_root.mc, true);
两种方法任选其一。 正确***
方法是在每一个MC上加入以下代码:
onClipEvent(mouseDown){
if(this.hitTest(_root._xmouse,_root._ymouse )){
this.startDrag()
onClipEvent(mouseUp){
this.stopDrag()
} 还是对影片剪辑有什么特殊的要求呢? 方法是在要跟着鼠标元件MC上加入以下代码:
onClipEvent(mouseDown){
if(this.hitTest(_root._xmouse,_root._ymouse )){
this.startDrag()
onClipEvent(mouseUp){
this.stopDrag()
< lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt lt;
文字逐个出现不能实现
想弄个文字逐个出现的动画
在加如了动态文本后取名为dazi
在第二层1frame中:
mystr="你好,我很高兴在这里认识大家“;
2fream 是空白关键fream,加入了:
if(i=mblength(mystr)){
gotoAndPlay(5);
dazi.text=m u tring(mystr,1,i);
gotoAndPlay(2);
后面的fream都是空白关键fream
4fream中:gotoAndPlay(2);
5fream中:stop()
但是效果不能实现,请帮忙 回复人:西部秋虫 信誉:3 总得分:2394 发贴时间:2004-11-22 17:51:32 得分:0
新建一TXT文本,输入如下内容:
output= 2004.9.6 西部之光网页更新啦,欢迎大家的光临~~~ 版本升级~ 采用纯Flash页面,站务动态从外部文本加载~还有就是会员制度,暂时由本人手动添加,等数据库配置好后将换为注册的形式,有意者与我联系。普通会员名称暂为:guest,密码为:guest。我的Email:
。关于会员的用途请点击公告区域的“什么是会员”。本站长期对外服务,您可以通过Email或留言板与我联系,服务费用底价为50元/件,您可以在收到作品完成信息后到农业银行汇款,账号为:15- 527701100032405
保存该文本为i ut.txt
在FLASH第一帧加入以下代码:
system.useCodepage = true;
// 从外部文本加载站务动态
this.loadVariables("i ut.txt");
在场景中建一动态文本,并命名为:otpt,var属性为output。
新建一空MovieClip,在第一帧加入以下代码:
_root.otpt.hscroll+=2;
mscroll=_root.otpt.maxhscroll;
if (_root.otpt.hscroll=mscroll) {
_root.otpt.hscroll=1;
在第二帧加入以下代码:
gotoAndPlay(1);
将该空组件拖至场景,测试。。。
注意:FLA与TXT要在同一目标下。。。 注意:FLA与TXT要在同一目录下。。。
___________________________________________________________________________________________
读取外部文件的问题?
看看我的AS:
System.useCodepage = true;
_root.loadVariables(\"i ut.txt\",\"_root.a\");
//i ut.txt是和swf文件同一文件夹的,a是文本变量名
_root.onEnterFrame=function(){
_root.a.hscroll += 2;
a=_root.a.maxhscroll;
if(_root.a.hscroll=a){
_root.a.hscroll = 1;
测试的时候有提示如下:
Error opening URL \"
" 随便什么都可以,我想应该道理是一样的吧 正确***
System.useCodepage = true;
_root.loadVariables("i ut.txt");
_root.onEnterFrame=function(){
_root.out.hscroll+=2;
max=_root.out.maxhscroll;
if(_root.out.hscroll=max){
_root.out.hscroll = 1;
你的代码好象有问题。。
上面的out是给文框的实例名。。
其VAR属性为a
外部文本第一行要加上:a=
再试试这个:
System.useCodepage = true;
vars = new LoadVars();
vars.load("i ut.txt");
vars.onLoad = function(succe ) {
if (succe ) {
_root.outTxt.text = this.a+this.a;
_root.maxH = _root.outTxt.maxhscroll;
} else {
trace("载入失败!");
_root.onEnterFrame = function() {
_root.outTxt.hscroll += 4;
if (_root.outTxt.hscroll=_root.maxH &am am _root.maxH0) {
_root.outTxt.hscroll = (_root.maxH-100)/2;
}; _-------------------------------------------------------------------------------------------------
如何让动画播放完后自动关闭
在最后一桢加fscommand("quit");
-------------------------------------------------------------------------------------------------------
AS中怎么控制动态文字框容纳文字的数量?
正确***
我记得是用maxChars属性
myText.maxChars=5
------------------------------------------------------------------------------------------------------------
怎样用文本控制链接
各位高手,小弟有一个问题请教:
我用flashmx做了一个导航菜单,可是在今后修改链接很麻烦,近日听说可以用文本来控制链接,想请问如何用文本文件来控制flash里的链接?
在此先谢谢回答问题的各位了! 这个分2个步骤来:
1.新建一个文本文件,文件名为:1.txt,打开文本输入:a=http://www.km169.net,保存
2.打开你的Flash原文件,新建一个层,在这个层里加代码:loadVariablesNum("1.txt", 0);
在你要加的按扭上加Action:
on (pre ) {
getURL(_root.a, "_blank");
我在1.txt里面,做一个链接,是可以,可是,做很多链接,就不行了,请问,我怎么样做才可以? 回复人:thor_c 信誉:0 总得分:240 发贴时间:2004-11-22 10:08:52 得分:0
文本文件(文件名假设为link.txt)
count=3&am link1=http://www.flashempire.com/&am link2=http://blog.thors.cn/&am link3=http://www.163.com
as代码:
var link_lv:LoadVars=new LoadVars();
link_lv.onLoad=function(succe )
if(succe )
for(var i=0;i {
trace(this["link"+(i+1)]);
trace("装载失败");
link_lv.sendAndLoad("link.txt",link_lv,"get"); sean820123 的方法能给一个按钮添加连接.
原因是一个文本文件只能控制一个按钮的连接.如果要给5个按钮添加连接,就建5个文本文件.
1.txt 输入:a=http://www.km169.net
2.txt 输入:b=http://www.sina.com
3.txt 输入:c=http://www.163.com
4.txt 输入:d=http://www.ibm.com
5.txt 输入:e=http://www.chinaren.com
接下来按照 sean820123
打开你的Flash原文件,新建一个层,在这个层里加代码:loadVariablesNum("1.txt", 0);
在你要加的按扭上加Action:
on (pre ) {
getURL(_root.a, "_blank");
一共在flash原文件新建5个层,分别加上代码
loadVariablesNum("1.txt", 0);
loadVariablesNum("2.txt", 0);
loadVariablesNum("3.txt", 0);
loadVariablesNum("4.txt", 0);
loadVariablesNum("4.txt", 0);
在你要加的按扭上加Action:
on (pre ) {
getURL(_root.a, "_blank");
on (pre ) {
getURL(_root.b, "_blank");
… #8230;
on (pre ) {
getURL(_root.e, "_blank");
这种方法很笨拙,能达到这个效果。我对脚本一窍不通,试出来的。
谢谢各位的指点,我把sean820123与thor_cn的方法做了一个合并,达到了我所想要的预期效果。
分2个步骤来:
1.新建一个文本文件,文件名为:1.txt,打开文本输入:a=http://www.km169.net,
(如果做多个链接,在变量前加"&am ":
&am a=http://www.flashempire.com/
&am =http://blog.thors.cn/
&am c=http://www.163.com)
然后保存。
2.打开你的Flash原文件,新建一个层,在这个层里加代码:loadVariablesNum("1.txt", 0);
在你要加的按扭上加Action:
on (pre ) {
getURL(_root.a);
这样就OK了。
在此我要再次谢谢各位! -----------------------------------------------------------------------------------------------------------
如何用duplicateMovieClip做鼠标跟随(后面拖了个尾巴那种)
做一个鼠标跟随,拖一条尾巴(就是复制前一个图)
用Startdarg隐藏鼠标,然后怎么用duplicateMovieClip来做出那个尾巴
请教高手指点 急急急啊 正确***
第一帧的句如下:
duplicateMovieClip(aa, "aa"+i, i);
startDrag("aa"+i, true);
i = i+1;
if (i50) {
i = 0;//只是为了控制个数,不加也可以。
第二帧加入gotoAndPlay(1);
就OK了!
最后别忘了命名:这里影片剪辑的名字为:aa
制作流程如下:
首先,建立一个flash新文件(废话^_^!!!汗)
ctrl+f8新建一个movieclip在此中任画一图形.
ctrl+l打开库;
回到主场景;
将刚建的movieclip拖入主场景;
点击刚拖入的对象打开属性面板将实例名改为c;
打开as编辑器输入以下代码:
onClipEvent (load){var time=100;
startDrag(this,true);
onClipEvent (enterFrame){
_alpha=time;
if(time=10){time-=10;}
else{this.removeMovieClip();}}
选中第一桢输入以下代码:
var n=0;
var con:Boolea onMouseMove=function(){Mouse.hide();
con=true;}
onEnterFrame=function(){if(con){
c.duplicateMovieClip("c"+n++,n);}
最后,ctrl+enter测试可以发现这就是你要的效果了^_^
作出来了不要忘了谢谢我啊^_^
-----------------------------------------------------------------------------------------------------
关于random( )的使用问题
FLASH中如何实现随机出现MC,假如我做一个MC(泡泡上升),名字是“ aopao",如何通过AS实现场景中随机出现好多大小不同,Alpha不同的泡泡。具体代码不知道谁能帮忙写出,谢谢。 这里有个类似的教程: 假设我按那个教程来做,不要随机数字的出现,这样直接用代码可以实现泡泡随机出现的效果吗?究竟哪里错了。
var n = 1;
//声明变量
onEnterFrame = function () {
// 逐帧调用
if (n != 45) {
// 如果n不等于45
duplicateMovieClip(a1, "a1"+n, n);
// 复制a1
setProperty(this["a1"+n], _x, random(500));
// x坐标为500以内随机数
setProperty(this["a1"+n], _y, random(300)+150);
// y坐标为150~450之间随机数
setProperty(this["a1"+n], _alpha, random(30)+70);
// 透明度 = random(50)+70;
setProperty(this["a1"+n], _xscale, );
// x比例
setProperty(this["a1"+n], _yscale, );
// y比例
trace(n);
} else {
// 否则,n重新为0
}; 正确***
代码是正确的,你的错误是:没有给实例命名
选中场景中的实例,打开属性面板,把实例名设为a1
----------------------------------------------------------------------------------------------------------
如何使用带滚动条的文本框的组件?
拖入到场景后,在哪里输入文字?
如果是带滚动条的图片文本框,应该怎么把图片加进去?
谢谢各位大虾了~~~
首先,把你要加入的图片,作为一个MC.然后对这个MC作链接,给它取一个名字,我这里假设为aa
然后,从组件面板中拖拽一个ScrollPane组件,在ScrollPane的参数设置面板,将Scroll Content的内容设置为aa,Horizontal Scroll 、Vertical Scroll设置为True,Drag Content设置为false,就可以啦,滚动显示图片啦 正确***
显示文字:
从组件面板中拖拽一个textAera组件,在属性面板中的text 参数栏中加入 你要显示的文字,你的文字足够都,就能在测试时看到滚动条了。
显示图片(或SWF文件):
把你要加入的图片,假设为abc.jpg(或SWF文件),把它拷贝到你存这不FLASH 文件的文件夹里。
然后,从组件面板中拖拽一个ScrollPane组件,在ScrollPane的参数设置面板,将Scroll Content的内容设置为abc.jpg(或SWF文件),如果你的图片比你的ScrollPane组件框小,显示的图片滚动啦 ---------------------------------------------------------------------------------------------------------------
怎么样关闭MC元件
做了个死循环的MC影片剪辑元件,但是跳到下一个空白帧的时候,该循环MC还是不停的显示,我要怎么样才能关闭这个MC元件的显示?哪位高手知道麻烦告诉,非常感谢!! 你是想让它停止还是让它消失?
停止就在空白帧添加:your_mc.stop();
消失就在空白帧添加:your_mc._visible=false;
----------------------------------------------------------------------------------------..
十字没在中心
物体移动时十字怎么才会在中心点上而不是在物体的左上方?谢谢! 正确***
选中物体 然后打开"窗口"=="设计面扳"=="信息",出来一个"信息"面板的窗口, 里面有个 9个格子的小方块 选中间那个格子 注册点就到物体中心了 ------------------------------------------------------------------------------------------------
请问:链接某一文件夹下的swf文件调用的语句是什么?谢谢!
请问:链接某一文件夹(跟当前文件不在同一文件夹下)下的swf文件调用的语句是什么?谢谢! loadMovie("url",target [, method])
或者loadMovieNum("url",level [, variables])
url可以是swf文件路径
--------------------------------------------------------------------------------------------------?
如何在FLASHMX2004中启动应用程序
我发现flash4.0/5.0均可调用外部程序,可是6.0以上版本就不能调用了,请教各位专家,怎样解决这个问题, fscommand()命令,详情看help。 FLASH MX要求fscommand 调用的*.exe文件要么在fscommand 文件夹下[比如:fscommand("exec","tools.exe");可以调用同目录中fscommand目录下的tools.exe],要么就写全路径[比如fsommand(("exec","c:\\progra~1\\intern~1\\iexplore");打开IE]。
我均用过这些方法,可是仍不行啊 你有没有在SWF文件的同一目录下新建一个FSCOMMAND目录啊,把*.exe文件放在FSCOMMAND目录里才行啊!
-----------------------------------------------------------------------------------------------------------
请问这个按钮从文本文件读取内容到文本框可以实现吗
flash层次
在MC2第一针:
_global.your_loadvars= new LoadVars();
_global.your_loadvars.AGE=new Array();
_global.your_loadvars.NAME=new Array();
在按钮(MC2)事件里:
on (release) {
_global.your_loadvars.load("data.txt");
空的MC3,拖到MC2舞台上后,点一下,然后在动作脚本里:
onClipEvent (enterFrame)
if (_global.your_loadvars.loaded)
tt.text=_global.your_loadvars.AGE[0];
tt.text="Read error!"
tt是动态文本的名字,在MC2中,和按钮在同一层,变量为text
data.txt里内容:AGE=0&am NAME=1
问题出在哪里,点击按钮没任何反应
有人可以帮我编一段ac吗,实现按钮从文本文件读取内容到文本框这个功能,谢谢了先 正确***
以前往FLASH中载入文本的时候,是比较麻烦的。。。
现在好了,我们可以直接从外部载入文本了。。
再也不用在文本中加可恶的:TEXT=。。。。。。。。。了
方法如下:
拖一TextArea到场景中,命名为:contenter,在场景第一帧加入以下代码:
System.useCodepage = true;
contenter.background = true;
contenter.backgroundColor = "0xffffcc";
contenter.textColor = "0x0000000";
contenter.wordWrap = 1;
my_loadvars = new LoadVars();
my_loadvars.load("二疏故里文化.txt");
my_loadvars.onData = function(texter) {
contenter.text =texter
在外部做一文本文件,测试。。。。
我是在一个文本框中用不同的按钮输入不同的文件内容,将这段代码加到按钮的动作里面吗? 是这样的,做一个日记本,一个按钮代表一天,把日记内容放在文件中点按钮读取,用同一个文本框显示
flash层次是这样的
日记本是MC2
如何实现呢 我也有一个问题还请大家回答:
载入的动态文本和图片为什么在上传至网络以后无效。但是我在本地上是没有问题,代码如下:
loadVariables("1.txt", "", "POST");
mc.loadMovie("1.jpg", "mc");
--------------------------------------------------------------------------------------------
急:请问怎么在每次刷新后页面后随机调用图片
请问怎么在flash页面里 随着每次的刷新页面而调用不同的图片 图片数量为9,名称为photo00-08
num=random(9);
loadMovie("photo0"+num+".jpg");
图片与flash在同一目录下
--------------------------------------------------------------------------------------------------
我需要设计这样的一个动作,请大家帮忙解决:
拖动一个MC到指定的位置,如果位置放错了就返回到原来的位置。
我不会编写这个MC的AS,请朋友们帮助一下!
谢谢! 正确***
将该MC想要拖动的目标位置上放一个透明MC。命名为:mc2
将想要拖动的那个MC加上:
onClipEvent (mouseDown) {
x = _x;
y = _y;
if (hitTest(_root._xmouse, _root._ymouse, true)) {
startDrag(this);
onClipEvent (mouseUp) {
if (hitTest(_root.mc2)) {
stopDrag();
} else {
_x = x;
_y = y;
stopDrag();
如果和MC2重合,该MC就为鼠标所在位置。
如果未重合。就返回原位置。
-------------------------------------------------------------------------------------------------------------
如何进行鼠标左右键的控制? 正确***
这个怎么样?
onMouseDown=function(){
trace("Wrong")
function go(){
if(Key.isDown(2)){
gotoAndPlay(n)
setInterval(go, 50)
--------------------------------------------------------------------------------------------------------------
如何用回车键来响应"确定"
向各位求救:在一输入文本框中键入一些文字后,如何不用按钮,而只用回车键来"确定"(并能判断键入的文字是否正确)? on (keyPre "") {
gotoAndPlay(1);
} 用回车键确定的代码是on(keyPre ""){},不过这个命令只用于按钮元件
你可以做一个影行按钮元件
判断文字对不对就可以用if语句了
不知道我说的对不对
要是不对请高手指出^_^ 正确***
if(Key.isDown(Key.ENTER))
if(focusManager.getFocus() == yourI utText)
… #8230;;//your code here
------------------------------------------------------------------------------------------------------------
鼠标箭头怎样变成其他的形状 。 正确***
很好做,两个命令,一个隐藏鼠标,一个鼠标拖拽组件,就ok了 不隐藏鼠标行吗 首先你要做一个替代鼠标外观的MC,然后在这个MC上写上AS:
onClipEvent(load){
Mouse.hide();        //隐藏鼠标
this.swapDepths(200);    //把这个MC的深度值切换到200 以免新外形被其他组件遮住
onClipEvent(mouseMove){
this._x=_root._xmouse;
this._y=_root._ymouse;   
updateAfterEvent(); //立即更新画面
---------------------------------------------------------------------------------------------------------------
关于给影片换色
最近接的一个单子,客户要求将flash汽车的颜色能够由网站后台进行更换.当然这就包括2部分了:
1、从数据库中读取色值到影片(该部分已经搞定);
2、通过一种办法将有色值的影片和汽车图片融合,使得汽车换色后依然逼真,还能够存在该有的高光和低光区。
听说影片的色调变化不能用as来实现,不知道是不是真的。
上面是别克的网站,代码我看了,老外的as代码跟写html代码一样老长老长的,看不懂。有兴趣的朋友可以一起讨论一下。
望高手赐教~上面所说的第二个部分该如何实现?谢谢
假如更换的颜色一共有30种,那么你就做三十个元件,通过后台直接操作这些元件就可以了。 但是网站交付后,后台数据库的内容是由客户自己来定制的,也就是说,需要什么色值,他们要求将来自主管理.我不知道都有那些色值,也不能规定有多少种色值. 正确***
可以试试这个想法:
1。假设你有 carColor 作为实例
2。要创建一个新的 Color 对象,
myColor = new Color(_root.carColor);
3。将事件与对象关联起来,之后用 setRGB 定颜色。
例如:
myColor = new Color(_root.carColor)
_root.blue.onRelease = function(){
myColor.setRGB(0x0000ff)
_root.red.onRelease = function(){
myColor.setRGB(0xff0000)
。。。颜色直 也可以通过数据库 可以动态设定!!
。。。。。。。。 1、从数据库中读取色值到影片(该部分已经搞定);
我需要的是第二步的解决办法。也就是我如何将有颜色的影片和一个图片结合,让图片根据这个颜色变更皮肤,我也试过将图片放在带颜色影片的上面,然后变更图片的透明度,但是效果很差。不知道是不是不能用这个想法来做?
不过还是要谢谢lee_holyad,我跟你用的办法一样
car_color = new Color(_root.car);
car_color.setRGB("0x" add color1);
//car是实例,color1为从数据库读取的色值变量 -----------------------------------------------------------------------------------------------------
如何用脚本画虚线
课件中需要画虚线,如何用脚本画虚线?急用! 正确***
_root.createMovieClip("grad",1)
_root.grad.lineStyle(3,0x0000ff,10)
_root.grad.MoveTo(100,100)
_root.grad.lineTo(200,200)
其实主要用这些语句,但其中参数较多,你可以找本书看这些指令
------------------------------------------------------------------------------------------------------------- Flash MX 在物理教学中的应用 -------平面镜成像 (此文获省二等奖)
“平面镜成像”应该是光学中比较重要又比较简单的一个知识点。如果用实验来研究平面镜成像的特点是比较复杂也比较费时的,特别是在实验条件有限的情况下。因此,笔者先从“平面镜成像”开始,详细谈一下如何用Flash MX (Trival version)制作CAI软件。
请看下面的特效图:
聪明的你当然已经想到了:我们应先建立一个Movieclip,内容当然是一支燃烧的蜡烛,并将其命名为“candle”,当然我们还需要复制一份当作虚像,并命名为“candle1”。除此之外,我们还需要一架平面镜,命名为“mirror”;两条入射光线,两条反射光线,分别命名为“line1”、“line4”、“line3”、“line6”,两条反射光线的反向延长线(虚线),分别命名为“line2”、“line5”。再新建四个“Dynamic”型的文本框,分别命名为“inconer1”、“inconer2”、“wj”、“xj”,分别显示入射角1、分射角2、物距、像距。(好嘛,中英文混合)。再新建两个小球,分别命名为“ dot1”、“dot2”,以分别表示两个入射点。
好了,下面开始我们的Action之旅。。。。。。
新建一层,命名为action1,并在该层加入以下代码:
candlex = candle._x;//获取蜡烛的x位置
candley = candle._y;//获取蜡烛的y 位置
dot1x = dot1._x;//获取入射点的x位置
dot1y = dot1._y;//获取入射点的y位置
dis1x = dot1x-candlex;//计算入射点及蜡烛间的x距离
dis1y = dot1y-candley;//计算入射点及蜡烛间的y距离
dis1 = Math.sqrt (dis1x*dis1x+dis1y*dis1y);//计算入射点及蜡烛间的距离
angle1 = Math.atan (dis1y/dis1x)*180/Math.PI;////计算入射点与蜡烛间的角度
inconer1 = -angle1;//获取入射角,并作如下处理
if (inconer10) { inconer1 = -inconer1;
setProperty("_root.line1", _rotation, angle1);//旋转入射光线1
setProperty("_root.line1", _xscale, dis1*1.65);//缩放入射光线1
setProperty("_root.line2", _rotation, -angle1);//旋转入射光线1的反向延长线
setProperty("_root.line2", _xscale, dis1*1.65);//缩放入射光线1的反向延长线
setProperty("_root.line3", _rotation, -angle1);//旋转入射光线1的反射光线
setProperty("_root.line3", _xscale, dis1*1.65);缩放入射光线1的反射光线
再新建一层,命名为action2,并加入以下代码:
fscommand("fullscreen", "true");//全屏显示
fscommand("allowscale", "0");//禁止缩放
dis = candle._x-mirror._x;//获取蜡烛与平面镜间的距离
setProperty("_root.candle1", _x, mirror._x-dis);//设定虚像的x位置
setProperty("_root.candle1", _y, candle._y);//设定虚像的y位置
setProperty("_root.line1", _x, dot1._x);//设置入射光线1与入射点1的x位置相同
setProperty("_root.line1", _y, dot1._y);//设置入射光线1与入射点1的y位置相同
setProperty("_root.line2", _x, dot1._x);//设置反向延长线1与入射点1的x位置相同
setProperty("_root.line2", _y, dot1._y);//设置反向延长线1与入射点1的y位置相同
setProperty("_root.line3", _x, dot1._x);//设置反射光线1与入射点1的x位置相同
setProperty("_root.line3", _y, dot1._y);//设置反射光线1与入射点1的y位置相同
setProperty("_root.line4", _x, dot2._x);//设置入射光2与入射点2的x位置相同
setProperty("_root.line4", _y, dot2._y);//设置入射光线2与入射点2的y位置相同
setProperty("_root.line5", _x, dot2._x);//设置反向延长线2与入射点2的x位置相同
setProperty("_root.line5", _y, dot2._y);//设置反向延长线2与入射点2的y位置相同
setProperty("_root.line6", _x, dot2._x);//设置反射光线2与入射点2的x位置相同
setProperty("_root.line6", _y, dot2._y);//设置反射光线2与入射点2的y位置相同
再新建一层,并加入以下代码:
candlex = candle._x;//获取蜡烛的x位置
candley = candle._y;//获取蜡烛的y位置
dot2x = dot2._x;//获取入射点2的x位置
dot2y = dot2._y;//获取入射点2的y位置
dis2x = dot2x-candlex;//计算蜡烛与入射点2间的x距离
dis2y = dot2y-candley;//计算蜡烛与入射点2间的y距离
dis2 = Math.sqrt (dis2x*dis2x+dis2y*dis2y);//计算蜡烛与入射点2间的距离
angle2 = Math.atan (dis2y/dis2x)*180/Math.PI;//计算蜡烛与入射点2间的角度
inconer2 = -angle2;//获取入射角,并作以下处理
if (inconer20) { inconer2 = -inconer2;
setProperty("_root.line4", _rotation, angle2);//设置入射光线2的旋转角度
setProperty("_root.line4", _xscale, dis2*1.65);//设置入射光线2的缩放
setProperty("_root.line5", _rotation, -angle2);//设置入射光线2的反向延长线2的旋转角度
setProperty("_root.line5", _xscale, dis2*1.65);//设置入射光线2的反向延长线2的缩放
setProperty("_root.line6", _rotation, -angle2);//设置反射光线2的旋转角度
setProperty("_root.line6", _xscale, dis2*1.65);//设置反射光线2的缩放
新建一层,命名为“测量物像到平面镜的距离”,并加入以下代码:
candlex = candle._x;//获取蜡烛的x 位置
mirrorx = _root.mirror._x;//获取平面镜的x 位置
setProperty(_root.line8, _x, mirrorx);//设置蜡烛像到平面镜间的虚线的x位置
setProperty(_root.line8, _y, _root.candle._y);//设置蜡烛像到平面镜间的虚线的y位置
setProperty(_root.line7, _x, mirrorx);//设置蜡烛到平面镜间的虚线的x位置
setProperty(_root.line7, _y, _root.candle._y);//设置蜡烛到平面镜间的虚线的y位置
canmirdx = Math.a (mirrorx-candlex);//获取蜡烛到平面镜间的x 方向上的距离绝对值
setProperty(_root.line8, _xscale, canmirdx*1.65);//设置蜡烛像到平面镜间的虚线的缩放
setProperty(_root.line7, _xscale, canmirdx*1.65);//设置蜡烛到平面镜间的虚线的缩放
wj = canmirdx;
xj = canmirdx;
新建成一层,命名为“烛像重合时的处理”,并加入以下代码:
if ((_root.candle._x=256) and (/:rs_visable==1)and (/:fs_visable==1)and (/:lx_visable==1)) { setProperty(_root.line1, _visible, 0);//设置入射光线1不可见 setProperty(_root.line2, _visible, 0);//设置入射光线1的反向延长线1不可见 setProperty(_root.line3, _visible, 0);//设置反射光线1不可见 setProperty(_root.line4, _visible, 0);//设置入射光线2不可见 setProperty(_root.line5, _visible, 0);//设置入射光线2的反向延长线2不可见 setProperty(_root.line6, _visible, 0);//设置反射光线2不可见 setProperty(_root.line7, _visible, 0);//设置平面镜与蜡烛间的虚线不可见 setProperty(_root.line8, _visible, 0);//设置平面镜与蜡烛像间的虚线不可见 setProperty(_root.dot1, _visible, 0);//设置入射点1不可见 setProperty(_root.dot2, _visible, 0);//设置入射点2不可见
} else if ((_root.candle._x256) and (/:rs_visable==1) and (/:fs_visable==1) and (/:lx_visable==1)) { setProperty(_root.line1, _visible, 1);//设置入射光线1可见 setProperty(_root.line2, _visible, 1);//设置入射光线1的反向延长线可见 setProperty(_root.line3, _visible, 1);//设置反射光线1可见 setProperty(_root.line4, _visible, 1);//设置入射光线2可见 setProperty(_root.line5, _visible, 1);//设置入射光线2的反向延长线可见 setProperty(_root.line6, _visible, 1);//设置反射光线2可见 setProperty(_root.line7, _visible, 1);//设置平面镜与蜡烛间的虚线可见 setProperty(_root.line8, _visible, 1);//设置平面镜与蜡烛像间的虚线可见 setProperty(_root.dot1, _visible, 1);//设置入射点1可见 setProperty(_root.dot2, _visible, 1);//设置入射点2可见
My God!代码好长啊!文章真难写呀!几点了?笔者还没来得及细想,就听到耳边传来谁的鼾声,谁的?我的吗?
对了,别忘了参看源文件。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Flash MX 在物理教学中的应用 ——光的反射与折射
2002年3月18日是一个令人激动的日子,Macromedia 公司的Flash 经过长期的孕育与改进,终于在这一天发布了MX 正式版本(终于可以不用可恶的Trival version了!)。经过试用与有关资料的阅读,笔者发现Flash MX在多媒体方面的表现更加优秀。特别是MX版本新加入的绘图API函数,Flash COMPONETS UI等组件的可自订与***以及可以导入***I等格式文件的功能,使Flash在各方面的功能均大大好于以往。兴奋之余,笔者决定用它来完成第二篇文章——《光的反射与折射》。
请看下面的特效图:
在上图中,我们可以拖动入射光线旁的小手电以改变入射光线的入射角度,还可以在文本框内输入两种介质的折射率。从面板中的文本框内我们还可以实时地了解到入射角、反射角及折射角的大小。
以上效果是如何实现的呢?
首先,我们需要制作本软件中所需的手电筒、入射光线、反射光线、折射光线等组件,并分别命名为:movedot、line1、line2、line3。然后建立两个“I ut”型的文本框,分别命名为:n1、n2,用以改变两种介质的折射率。最后建立三个“Dynamic”型的文本框,用以显示入射角、反射角及折射角的角度,分别命名为:coner1、coner2、coner3。
好,所需的主要组件已经完成,下面我们为各组件加入相应的Actio 。
我们知道,光线折射时总遵循以下定律(在本软件中,n=n1/n2):
入射角及反射角均好确定,关键是如何确定折射角。从上式可知:
于是,我们可新建一层,在第一帧输入以下代码:
x1 = getProperty (_root.movedot,_x);//获取手电的x位置
y1 = getProperty (_root.movedot,_y);//获取手电的y位置
x2 = getProperty (_root.one,_x);//获取入射光线的x位置
y2 = getProperty (_root.one,_y);//获取入射光线的y位置
x = x1-x2;//获取手电与入射光线的x距离
y = y1-y2;//获取手电与入射光线的y距离
r1 = x*x+y*y;
r = Math.sqrt (r1);
angl = y/x;//计算手电与入射光线构成角的正切值
angl = Math.atan (angl)*180/Math.PI;//计算手电与入射光线构成角的角度
if (x0) { angl = 180+angl;//角度为负时的处理
setProperty(_root.one, _rotation, angl+90);//设置入射光线随手电旋转
setProperty(_root.two, _rotation, -(angl+90));//设置反射光线随手电旋转
setProperty(_root.one, _yscale, r*2.3);//设置入射光线随手电位置的改变而发生长短变化
setProperty(_root.movedot, _rotation, angl+90);//设置手电旋转
以上处理的是反射光线与入射光线的关系,下面我们要处理的是折射光线与入射光线的关系。
新建一层,并在第一帧加入以下Actio :
//这一部分是关键,主要设置折射光线的变化
fscommand("fullscreen", "true");//全屏
fscommand("allowscale", "0");//禁止调节显示屏
angle1 = _root.one._rotatio //获取入射光线旋转角度
sini = Math.sin (angle1*Math.PI/180);//获取sini
sinr = sini*n1/n2;//获取sinr
if ((_root.movedot._y_root.dot._y)) { sinr = sini*n2/n1;
angler = Math.asin (sinr)*180/Math.PI;//获取折射光线应旋转的角度
if ((angle1=90)or ((angle1=-180)and(angle1=0))) { angler = 180-angler;
if ((angle1=-90)and(angle1=0)) { angler = 180-angler;
setProperty(_root.three, _rotation, angler);//设置折射光线的旋转角度
if ((n1< 2)and(_root.movedot._y_root.dot._y)) { setProperty(_root.three, _rotation, angler);
coner1 = angle1;//获取入射角
coner3 = angler;//获取折射角
if (coner10) { coner1 = -coner1;
if (coner190) { coner1 = 180-coner1;
coner2 = coner1;
if (coner20) { coner2 = -coner2;
if (coner390) { coner3 = 180-coner3;
if (coner30) { coner3 = -coner3;
if ((coner1=90)) { setProperty(_root.three, _visible, 0);//设置折射光线的可见度为“不可见”
} else { setProperty(_root.three, _visible, 1);设置折射光线的可见度为“可见”
//以下为容错处理
if ((coner3=90.001)) { setProperty(_root.three, _visible, 0);
} else { setProperty(_root.three, _visible, 1);
通过以上Actio 的作用,我们就可以实现上图中的大部分功能了(您可以参照上图稍作修饰)。
为了使该软件使用起来更方便,我们还可以借助Flash MX 强大的编程功能加上自动演示,隐藏/显示等功能,在此不再赘述。
在以上的源代码(可直接copy使用)中,笔者为方便大家的理解,在语句的后面均设置了“//”作为注解,请参阅。
需要特别指出的是,在实际调试程序过程中,我们并不能保证软件效果随时随我们的想法改变而改变(这种说法同样适用于上一篇文章),也许我们会遇到各种各样的问题,这时我们需要冷静与耐心。要知道,实现同一种效果的方法不仅一种,当一种方法行不通时,我们可以尝试使用另一种方法,总问题往往会迎刃而解。
Flash MX 在物理教学中的应用
——透镜成像
我宣布:这将是最后一个光学课件,并且还是讫今为止笔者最用心的一个。为什么?因为这是笔者参评的一篇论文,能不用心吗。可喜的是,该论文还获了个不小不大的奖,请往下看吧———
请大家先看下面的特效图:
用鼠标拖动图中的蜡烛或透镜(甚至可以是刻度尺),用键盘在焦距框内输入不同的焦距,蜡烛通过透镜所成的像(实像或虚像)可按实际的情况作相应变化。
以上效果是如何实现的呢?
首先,我们需要分别制作一个蜡烛和蜡烛像的组件(这是该课件中的主角),并分别命名为:candle、candle1。再制作一个透镜及透镜光心的组件(透镜组件的第1帧为凸透镜形状,第2帧为凹透镜形状),分别命名为ttj、ball。使candle、candle1、ttj、ball四组件在场景中处于同一高度。然后在场景左上角做三个文本框,名字分别为uu(显示物距)、vv(显示像距)、jjj(输入焦距)。好,所需的主要组件已完成,下面我们为各组件加入相应的action。
我们知道:透镜成像时遵循以下定律:
物距(u)和像距(v)都好确定,关键问题就是如何根据物距(u)和焦距(f)计算像距(v),由上式可知:
于是,我们可新建一层,输入以下代码:
第1帧:
fscommand ("fullscreen", "true");//全屏显示
fscommand ("allowscale", "0");
f = jjj*5;//为使刻度尺上的刻度与输入焦距相符,使输入的jjj变量值扩大5倍。
setProperty ("_root.jdot3", _x, _root.jdot1._x+2*jjj*5);//“jdot”为图中的“f”和“2f”。
setProperty ("_root.jdot4", _x, _root.ball._x+(jjj*2*5));
setProperty ("_root.jdot1", _x, _root.ball._x-jjj*5);
setProperty ("_root.jdot2", _x, _root.ball._x-(jjj*2*5));
u = _root.ball._x-_root.candle._x;//计算物距(可能为负数)。
u1 = Math.a ( _root.ball._x-_root.candle._x);//强制物距转化为正数
if (uujjj) { setProperty ("_root. ", _visible, 0);//用“ #8221;(白屏)的有无表示所成像的实、虚。
} else { setProperty ("_root. ", _visible, 1);
uu = u1/5;//为了调节刻度尺上的刻度与物距框内的数字吻合,使uu=u1/5。
v = (u1*f)/(u1-f);//根据公式计算像距。
vv = v/5;//对应于物距的变化,使vv=v/5
由于Flash5场景(0,0)座标并不在场景中心,而在左上角,我们在确定像的位置时,是以透镜的中心为标准的,Flash并不会自动地调整像的位置,因此我们还需加入以下的代码以使像的位置分布符合事实。
if (u-1) { setProperty ("_root.candle1", _x, _root.ball._x-v);//根据物距调整像的位置。 setProperty ("_root.candle1", _yscale, -hh*1.6);//调整像的大小。 setProperty ("_root.candle1", _visible, 1); setProperty ("_root. ", _x, _root.ball._x-v);//使白屏的位置与像的位置一致
} else if (u1) { setProperty (_root.candle1, _x, _root.ball._x+v);//根据物距调整像的位置。 setProperty (_root.candle1, _yscale, hh*1.6);//调整像的大小。 setProperty ("_root.candle1", _visible, 1); setProperty ("_root. ", _x, _root.ball._x+v);使白屏的位置与像的位置一致
} else { setProperty ("_root.candle1", _visible, 0);//当像与透镜重合时,让像不可见。
我们知道,当焦距小于0或物距小于焦距时,透镜成的像为虚像,为实现此效果,我们可以继续加入以下代码:
if ((jjj0) or (uu)jjj) { setProperty (_root. , _visible, 0);//如果焦距小于0或物距小于焦距,设置白屏不可见。
} else { setProperty (_root. , _visible, 1);
if (jjj0) { tellTarget ("_root.ttj") { gotoAndStop (2);//当焦距小于0时,透镜自动变为凹透镜。 }
} else { tellTarget ("_root.ttj") { gotoAndStop (1);当焦距大于0时,透镜自动变为凸透镜。 }
hh = _root.candle1._width*(v/u)*5;//根据物距和像距调整像的大小
通过以上Action的作用,当我们拖动蜡烛运动时,蜡烛所成的像就可以依据现实作相应变化了。(注:上述程序并非单纯根据u、f计算v,还有许多其它功能的实现,笔者在每段重要的程序后都做了相应的注释,大家可以参照理解。)
在实际教学中,我们常通过作图说明透镜成像的原因(即实像是由实际光线汇聚成的,虚像是由非实际光线汇集而成的),如下图:
这如何在该课件中实现呢?我们分别做两条直线,并分别定义为组件,分别命名为:“line”及“line1”(注意设置其中心点在线的一端),新建一层加入以下代码:
第1帧:
setProperty ("_root.ball", _x, _root.ttj._x);//“ all”为一新建组件,属性为“不可见”,将它作为透镜的光心
setProperty ("_root.gjz", _x, _root.ttj._x);//“gjz”为“光具座”的简称,对应图中的刻度尺,该刻度尺的中心在“0”处。
setProperty ("_root.zgz", _x, _root.ttj._x);//“zgz”为组件“主光轴”,在图中显示为一条虚线。
setProperty (_root.line, _x, _root.ball._x);//“line”、“line1”为过光心的入射光线。
setProperty (_root.line, _y, _root.ball._y);
setProperty (_root.line1, _x, _root.ball._x);
setProperty (_root.line1, _y, _root.ball._y);
angle = Math.atan (30/u)*180/Math.PI;//根据蜡烛高及物距确定入射光线及折射光线旋转的角度及长短的变化
if (u0) { setProperty (_root.line1, _xscale, -v/1.55);
} else if (u0) { setProperty (_root.line1, _xscale, v/1.55);
if (_root.line1._xscale=1000) { setProperty (_root.line1, _xscale, 1000);
if (_root.line1._xscale=-1000) { setProperty (_root.line1, _xscale, -1000);
scale = _root.line1._xscale;
setProperty (_root.line, _xscale, u/1.6);
setProperty (_root.line, _rotation, angle);
setProperty (_root.line1, _rotation, angle);
这一部分很好理解,其中的意思自己去体会吧!
为了使该课件使用起来更方便,我们还可以借助Flash MX强大的编程功能加上自动演示、表格数据处理等功能,在此不再赘述。
需要特别指出的是,在实际调拭程序的过程中,并不能保证课件效果随时随我们的思想改变而改变,也许我们会遇到各种各样甚至奇怪的问题,这时侯我们需要的冷静与耐心,要知道:实现同一种效果的方法不仅一种,当一种方法行不通时,我们可以尝试另一种方法,问题往往会迎刃而解。如:在该课件的实现过程中,笔者很为白屏的有无费了一番脑筋,因为在使用“ etProperty ("_root. ", _visible, 0) #8221;语句时存在冲突,当想隐藏白屏时总也隐藏不了,在这种情况下,笔者想到了将白屏的位置设置到场景外,测试时的效果与当初的想法一样。
Flash MX 在物理教学中的应用 ——分子动理论
Flash的魅力是无穷的,这很容易让人想起New fish曾说过的“只有你想不到的,没有它做不到的”这句话,每当有人问我:“Flash能做什么?”这个问题时,我总反问:“你想做什么?”——是啊,你想做什么?做动画?网页?课件?广告?游戏?——这些Flash全能做。翻翻初三物理课本,发现课本将“分子运动论”这一节竟改成了“分子动理论”,总觉得不如原来的课题好,心里一时转不过弯来。这节课倒是一个很好的“作点”(适于做课件的一个知识点),先不管课题了,还是想想如何来实现分子的运动与碰撞吧!——天哪!好难!
请看下面的特效图:
(分子应该是圆形的呀,怎么是方形的?)
新建一白色圆Movieclip,命名为“ all”(就是上面那个绿色小球啊),再新建成一白色圆Movieclip,命名为“o”。
回到主场景,新建一层,命名为“轨迹层”,并加入以下代码:
setProperty(ball, _visible, 0);//设置ball不可见
setProperty("ball"+/:num, _visible, 0);//设置ball的其它复制对象不可见
setProperty("ball"+/:num, _x, _root.o._x);//设置ball的其它复制对象的x位置与"o"的x位置相同
setProperty("ball"+/:num, _y, _root.o._y);//设置ball的其它复制对象的x位置与"o"的 y位置相同
新建一层,命名为“circle”,放置Movieclip"o",并加入以下代码:
新建一层,命名为“variable”,并加入以下代码:
fscommand("fullscreen", "true");//全屏显示
fscommand("allowscale", "0");//禁止缩放
total_circles = 18;//分子个数
movie_width = 500;//场景宽度
movie_height = 400;//场景高度 eed = 4;//分子运行速度
在movieclip"o"内加入以下代码:
第一帧:tellTarget ("color") { gotoAndStop(getProperty("../", _name));//根据分子名称设置分子颜色
第二帧:my_radius = this._width/2;//获取分子的半径
// 'n' is always 'name' of circle.
my_x = this._x;//获取分子的x位置
my_y = this._y;//获取分子的y位置
my_n = this._name;//获取分子的名称
if (Number(ymov) == 0) { ymov = Number(random(/: eed));//设置分子的随机y速度 xmov = Number(random(/: eed));//设置分子的随机x速度 // // 选取一

参考资料

 

随机推荐