flash常见问题集锦,很适合新手哦

如何加载一个SWF文件并控制其位置等相应属性……

新建一个空地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 (_currentframe>1) {
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() {
i++;
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. 复制下列代码

<script language="JavaScript">

function openNewWindow(URLtoOpen, windowName, windowFeatures) { newWindow=window.open(URLtoOpen, windowName, windowFeatures); }
</script>
请将上述代码完整地复制到HTML源代码的<head>和</head>置标符之间。此函数就可以接收到Flash发出的指令并创建新窗口。Flash指令会把关于打开窗口的一些参数发送至浏览器,这些参数信息包括窗口大小,是否包含工具条以及窗口的链接地址。

3. 向HTML源代码的<EMBED>置标符内添加下列参数
"swLiveConnect=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文件中加入这样一句:

看看这个网页:
http://home.cfe21.com/xbzg


A HREF=Javascript:+/A
"+"号两边各加“<>”
再去掉"+"
错。。
这个才是正确的。。。
 

<!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" xml:lang="zh-CN" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>荆棘鸟</title>
<style type="text/css">
<!--
.style1 { font-size: 12px;
 font-weight: bold;
}
.style2 {font-size: 14px}
body {
 background-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;
}
-->
</style>
</head>
<body>
<!-- 影片中使用的 URL-->
<a href="javascript:window.external.addFavorite('http://liniao.go.nease.net/index.htm','荆棘鸟')"></a>
<a href="mailto:wlx15244@126.com"></a>
<!-- 影片中使用的文本-->
<table width="726" border="0" align="center">
  <tr>
    <td><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="730" height="110" align="top">
      <param name="allowScriptAccess" value="sameDomain" />
      <param name="movie" value="jingjiniao.swf" />
      <param name="quality" value="high" />
      <param name="bgcolor" value="#FFFFFF" />
      <embed src="jingjiniao.swf" quality="high" bgcolor="#FFFFFF" width="730" height="110" align="top" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />   
</object>
      <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="730" height="25">
        <param name="movie" value="1.swf" />
        <param name="quality" value="high" />
        <embed src="1.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="730" height="25"></embed>
    </object>
      <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="730" height="600">
        <param name="movie" value="zhuye.swf" />
        <param name="quality" value="high" />
        <embed src="zhuye.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="730" height="600"></embed>
    </object>
      <table width="730" border="1" align="center" cellpadding="0" cellspacing="0" bordercolorlight="#000000" bordercolordark="#FFFFFF"
bgcolor="#8985E0" class="border" bordercolour="#0000FF">
        <tbody>
          <tr class="title" align="middle" height="22">
            <td width="836" bgcolor="#8985E0"><div align="center" class="style1"><font face="楷体_GB2312">|&nbsp;<a
      οnclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://liniao.go.nease.net/index.htm');"
      href="http://liniao.go.nease.net/index.htm">设为首页</a>&nbsp;|&nbsp;<a
      href="javascript:window.external.addFavorite('http://liniao.go.nease.net/index.htm','荆棘鸟')">加入收藏</a>&nbsp;|&nbsp; <a href="#"  οnclick="wlx15244@126.com" title="          </tr>
          <tr class="tdbg" valign="bottom" align="middle" height="20">
            <td height="94" valign="top" bordercolor="#000000" bgcolor="#8985E0"><div align="center">
              <p class="style2">本站大部分文章摘自网上 <br />
     站长:荆棘鸟 QQ:65884452 E-mail:
wlx15244@126.com</p>
             
            </div>
                <div align="center">
                  <p>你是本站的第
              <script src="http://www.56321.com/cfcount/counter.asp?name=102332506&ys=8&hidden=1"></script>
    个访问者</p>
     </div>
      </td>
          </tr>
        </tbody>
      </table></td>
  </tr>
</table>
<script src='http://ad.nease.net/nnselect.js'></script>
</body>
</html>

--------------------------------------------------------------------------------
彩旦组建:

    今天来看看Menu组件,这个东东是专业版特有的,所以要多看看帮助,当然,也要多点口水,先来看帮助中的一个例子。

    下面为用Menu组件建一个应用(按帮助翻译,由于英语不行,有错误请指正)。

    1、选择文件--新建来创建一个flash文档。

    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);
 }
 button.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;n < a.length;n++){
  myMenu1=myMenu.addMenuItem(a[n]);
  //建立一级菜单
   for(var j=0;j < a1.length;j++){
    myMenu1.addMenuItem(a1[j]);
    //建二级菜单
    }
}
myMenu.show(100, 20);
//菜单的位置
    运行看看,不错吧

----------------------------------------

flash留言本

最近我把自己制作的一个 Flash 留言板放到了爬行榜上,引起了大家不小的兴趣,很多朋友纷纷要求提供原始代码,现在,大家已经可以下载到原始代码了,但是,我想,还是要配合一个教程好一些。

  (没有概念的朋友请看这个演示……点这里)

  于是,抓紧时间,马上开始写。计划是分成两部分:一部分是ASP部分的分析,另一部分是在 Flash 中的操作。

  下面,我们先来看看数据是怎样经过ASP处理的。

  这个留言板一共有三个文件——Flash SWF 影片文件、ASP程序和留言板数据文件(文本文件)。

一、数据的排列方式

  由于实在没有什么特殊的要求,所以,没有必要使用数据库,只要把留言板的数据格式确定好就可以了,于是,我们确定如左边图显示的这种文本结构。在实际应用中,这个文件叫做 guest.txt。

  这种结构很简单,第一条数据代表一共有多少条留言,中间部分就是内容,最后一个标记着文本文件的结束。

  我来具体解释一下:各个数据都以 & 号开头,因为这样 Flash 在读取的时候就会把它当成一个变量。现在“&total=2”被读入以后,Flash 就会把影片中的 total 设置成 2。

  中间部分也是一样,第一个留言的三个部分是 sub1 name1 text1,而第 n 个留言的三个部分就是 subn namen textn……

  最后的这个“&eof=true”好象意义不大,但是其实它主要是作为标志来用,当 Flash 在读取文件的时候,肯定要显示“正在读取中……”等内容,那么怎样才能判断是否已经完全读取了呢?当然是在“&eof=true”被读取以后(也就是在 Flash 中 eof = true),才算完成。这个时候,我们就可以告诉大家:“完成”了。否则,动画就会循环显示“正在读取中……”,直到完成。

二、ASP完成了什么

  那么,就该我们的ASP程序了,其实它完成的是最基础的工作:读取和写入,其它的功能,比如显示、浏览方式等等都还是由 Flash 完成的。

  首先,参数要全部读取进来(这些数据应该是从 Flash 传来的)。

subject = request("sub")
name = request("name")
text = request("text")
action = request("action")

  先看它的读取功能。本来我们设置了 action=read 的时候去读 guest.txt,但是发现:

  (注意:值得注意)尽管在 Netscape 中已经通过了,可是在 IE 中我们却遇到了挫折,原本不应该受 Cache 左右的 asp 程序竟然不听使唤。每次用户发了新留言以后,死活也不给刷新了。没有办法,我们只得改变战术,在 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)
  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=n 中的 n 提取出来,并转成整型)
  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

  相信有基础的闪客一定会很快就弄明白的。这里做一点说明:

  (1)buf 在这里很关键,它保存着目前留言板上的所有信息。我们要做的其实是:把老信息保留,然后添加入新的信息,再把老信息加在后面。就这样,不断的添加,生成大的留言板数据文件。这是程序的主要功能。


  (2)Application.Lock 和 Application.Unlock 是保护文件的方法,因为有可能出现大家一起读写一个文件的情况,会使数据丢失。使用它们就可以避免这种现象。

  (3)total = int(mid(line,8)) 是简单的 VB 语句,因为 line 读近来以后应该是“&total=12”或者“&total=71”什么的,我们需要的是 12 和 71,但是 Flash 需要“&total=xxx”,所以必须要这样做,使用 mid() 函数可以帮助我们得到“=”号后面的数据。int() 则把得到的字符型数据转换成整型,使之可以进行运算。

  好了,待续。下一部分将是 Flash 里面的手脚。哈哈!
------------------------------------------------------
flash留言本下

Flash 里面的手脚

  完成了ASP部分,我们可以比较蹋实的来做FLASH里面的内容了。

  ASP部分完成了数据的读取和写入,而这些资料进入FLASH以后,则需要进行一定的排列和整理。这些工作在ASP里面做反而有些烦琐,而在FLASH里面来完成,则容易得多了……

  下面,看看我们的 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 ("http://www.yourhost.com/guest.asp?action="& r, "")

Set Variable: "temp" = "正在读取信息中……"
  要说明的是:temp 是文本框变量名,temp 等于什么,屏幕上就显示什么。

 

  大家看:紧接着程序向下走,经过 read(只是一个标记),继续向下到达了一个 action keyframe。

If (eof ne "true")
Go to and Play ("read")
End If
  这就是我们前面讲过的,直到读完文件,不然总是返回 read 去显示“正在读取信息中……”。如果读取完成,也就是“eof eq "true"”了的话,执行下面一个关键语句。

Set Variable: "total" = Substring ( total, 0, Length ( total ) - 2 )
  如果您懂得程序,就不难发现:我们通过这个语句把取得的 total 值截去了两个字节——如果不这样做的话,您会发现返回的 total 竟然有两行,我们这样做是为了取得正确的数值。尽管 Flash 的数据类型不甚讲究,但是这种错误还是会出现的。

 

  好了,下面到了我们的 main 了,显示数据总数:

Set Variable: "temp" = "信息读取完成,共有信息条目数:"& total
Stop
  总数显示的页面下面会有两个按钮,一个是“查看”,另一个是“添加”,我们先来看简单的那个:“添加”。

  insert 只是停留在一个添加 frame 上,而当用户输入了信息以后,真正的提交工作是在 do_insert 完成:

If ((sub eq "") or (name eq "") or (text eq ""))
 Go to and Play ("error")
Else
 Set Variable: "temp" = "正在向服务器添加数据……"
 (action=add)
 Load Variables ("http://www.yourhost.com/cgi-bin/guest.asp?action=add", "", vars=POST)

 Go to and Play ("wait2")
End If
  很简单的一个提交,把信息传送到ASP程序去,然后转到 wait2 去等待结果。至于 error,不过是一个出错 frame 罢了,不用关心。

  wait2 等待成功,后面的 action 继续循环,直到知道写入成功为止。到此,添加的工作就完成了。画面上会显示“数据成功写入!”,并且有按钮带用户回到 reading 去。

If (added <> 1)
Go to and Play ("wait2")
End If
Set Variable: "temp" = "数据成功写入!"
Stop


  下一个部分,该是“显示”功能了。

  在做这部分的时候,我有点来了脾气,想弄得更好一些,所以,做了一些“多余”的工作。在我写这篇文章的时候,站点上测试的留言已经有几百条了,而且永远不会减少。但是,我当时还是根据自己的想法,把显示功能做了强化:少于6条留言的时候有一种处理,多于6条的还有一种处理。嘿嘿,只有发头几条留言的人才会发现:原来是有一些区别的……哦。其实这个功能真的很多余,完全可以通过程序在后面来解决,现在还给大家增添了读程序的负担,实在对不起各位闪客了。

  所以,view 的程序是这样开始的:

Set Variable: "cur" = total

If (total <= 6)
Go to and Stop ("view6")
Else
Go to and Play ("view6p")
End If
   我们先通过少于等于6条留言的处理,来展示是如何实现显示留言功能的:

Set Variable: "i" = 6
Set Variable: "current" = cur

Loop While (current > 0)
 Set Variable: "t"&i = eval("sub"& current)
 Set Variable: "current" = current - 1
 Set Variable: "i" = i - 1
End Loop

Stop
  我通过简单的方法来显示这小于等于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")
End If
Else
 Set Variable: "load" = b - 6 + cur
 Go to and Stop ("viewdetail_now")
End If
  关键的地方到了,看看 viewdetail_now 是怎样显示的吧:

Set Variable: "new_sub" = eval("sub"&load)
Set Variable: "new_name" = eval("name"&load)
Set Variable: "new_text" = eval("text"&load)
Set Variable: "new_sub" = Substring ( new_sub, 0, Length ( new_sub ) - 2 )
Set Variable: "new_name" = Substring ( new_name, 0, Length ( new_name ) - 2 )
Set Variable: "new_text" = Substring ( 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
Stop
  我们先把每个数据做了类似 total 的处理,然后将他们赋给相应的文本框,显示就完成了。

  那么,多于6条留言是什么样的呢?我们给它加上了两个按钮,可以用来上下翻页的。他们的 action 其实很简单:

(上按钮)
On (Release)
 If (cur <> total)
  Set Variable: "cur" = cur + 6
  Go to and Play ("view6p")
 End If
End On

(下按钮)
On (Release)
 If (cur > 6)
  Set Variable: "cur" = cur - 6
  Go to and Play ("view6p")
 End If
End On


  在多于6条留言的处理上,我们还加上了一些内容:

Set Variable: "i" = 6
Set Variable: "backmethod" = 1
Set Variable: "current" = cur
Loop While (i > 0)
 Set Variable: "t"&i = eval("sub"& 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.offsetWidth>800){
{
document.write("<div id=huashuolayer2 style='position: absolute;visibility:visible;z-index:1'><EMBED src='images/duilian2.swf' quality=high  WIDTH=100 HEIGHT=300 TYPE='application/x-shockwave-flash' id=sinadl></EMBED></div>"
+"<div id=huashuolayer3 style='position: absolute;visibility:visible;z-index:1'><EMBED src='images/duilian1.swf' quality=high  WIDTH=100 HEIGHT=300 TYPE='application/x-shockwave-flash' id=sinadl></EMBED></div>");
}
  winload()
}

在这段代码中只要改动的是两个FLASH动画的路径,一个是duilian2.swf,一个是duilian1.swf,如果两上对联广告一样的,那么这两个路径也就一样!

5、调用页面的代码分为如下两句:
<script 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(别忘了输入变量名了),输入文本框的实例名称为input_text
那么在你按钮的事件里加代码:
on(release)
{
dy_text.text=input_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"中的内容.我已经将该文件和flash文件放在同一文件夹下."职工1.txt"文件中的内容如下"&name=张强
&sex=男
&age=26"
可我无论怎么做,都无法调用到这个"职工1.txt"文件中的内容.我查阅了一下资料,说我的记事本文件必须用MIME格式书写,请问如何书写才是MIME格式的啊?我的问题是不是出在这里呢?请各位大侠赐教啊~ 不胜感谢!!!
 
 

正确答案
把记事本另存为 编码:UTF—8 那一项,另外用“&”来继续下一个变量的时候不要有空格和回车之类的,紧接着写就是。
 

---------------------------------------------------------------------------------------------->

在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;
_y=0;
v=50;
a=9.8;
vx=Math.cos(radian)*v;
vy=Math.sin(radian)*v;
}
onClipEvent (enterFrame) {
vy+=a;
_x+=vx;
_y+=vy;
}
这段代码是不是做平抛运动的物体?
还有他的速度v,加速度a,的单位是怎么定的,谢谢告之
 
 
正确答案
不仅仅是平抛运动。。。
这是一段通用代码。。。
当radian=0时,才是平抛。。。
如果radian>0,就是上抛。。。
速度v的单位是取场景默认的单位。。
不过这段代码的v初始值过大效果不明显,改成这样,则效果好了许多:
因为是模拟,所以无关知识的正确性。。。

onClipEvent (load) {
_x=100;
_y=0;
radian=0
v=1;
a=0.98;
vx=Math.cos(radian)*v;
vy=Math.sin(radian)*v;
}
onClipEvent (enterFrame) {
vy+=a;
_x+=vx;
_y+=vy;
}

 
这也是一个抛体运动
帧1:stop();
s0 = getProperty (_root.k,_x);
p0 = getProperty (_root.k,_y);
vx = 20;
vy = 50;
t = 0;
帧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);
n++;
};//这是一种放射效果
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

求教如何删除或停止function
例:
x=0;
tracker=function(){
trace(x);
x++;
}
setInterval(tracker,100);
求教如何删除或停止"tracker"这个function.

 
 
正确答案
首先说明一点,你这个是死循环!可以考虑给它加一个循环条件;比如让x到20的时候停下,就可以用
x = 0;
tracker = function () {
if (x<=20) {
trace(x); //x<=20即为循环条件
x++;
}
};
setInterval(tracker, 100);
另外,setInterval()函数也可以用clearInterval()函数来停止
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

怎样让元件跟着鼠标走呢?
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()

}
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

文字逐个出现不能实现
想弄个文字逐个出现的动画
在加如了动态文本后取名为dazi

在第二层1frame中:
i=o
mystr="你好,我很高兴在这里认识大家“;

2fream 是空白关键fream,加入了:
if(i<=mblength(mystr)){
gotoAndPlay(5);
dazi.text=mbsubstring(mystr,1,i);
}
else{
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:hdt1976@163.net。关于会员的用途请点击公告区域的“什么是会员”。本站长期对外服务,您可以通过Email或留言板与我联系,服务费用底价为50元/件,您可以在收到作品完成信息后到农业银行汇款,账号为:15- 527701100032405
保存该文本为input.txt
在FLASH第一帧加入以下代码:
system.useCodepage = true;
// 从外部文本加载站务动态
this.loadVariables("input.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(/"input.txt/",/"_root.a/");
//input.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("input.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("input.txt");
vars.onLoad = function(success) {
if (success) {
_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 && _root.maxH>0) {
_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 (press) {
getURL(_root.a, "_blank");
}

 

我在1.txt里面,做一个链接,是可以,可是,做很多链接,就不行了,请问,我怎么样做才可以?
 
 回复人:thor_cn    信誉:0  总得分:240 发贴时间:2004-11-22 10:08:52  得分:0

文本文件(文件名假设为link.txt)
count=3&link1=http://www.flashempire.com/&link2=http://blog.thors.cn/&link3=http://www.163.com

as代码:
var link_lv:LoadVars=new LoadVars();
link_lv.onLoad=function(success)
{
if(success)
{
for(var i=0;i {
trace(this["link"+(i+1)]);
}
}
else
{
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 (press) {
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 (press) {
getURL(_root.a, "_blank");
}

on (press) {
getURL(_root.b, "_blank");
}
……
on (press) {
getURL(_root.e, "_blank");
}

这种方法很笨拙,能达到这个效果。我对脚本一窍不通,试出来的。

 


谢谢各位的指点,我把sean820123与thor_cn的方法做了一个合并,达到了我所想要的预期效果。
分2个步骤来:
1.新建一个文本文件,文件名为:1.txt,打开文本输入:a=http://www.km169.net,
(如果做多个链接,在变量前加"&":
&a=http://www.flashempire.com/
&b=http://blog.thors.cn/
&c=http://www.163.com)
然后保存。
2.打开你的Flash原文件,新建一个层,在这个层里加代码:loadVariablesNum("1.txt", 0);
在你要加的按扭上加Action:

on (press) {
getURL(_root.a);
}
这样就OK了。
在此我要再次谢谢各位!
 
----------------------------------------------------------------------------------------------------------->>>>
如何用duplicateMovieClip做鼠标跟随(后面拖了个尾巴那种)

做一个鼠标跟随,拖一条尾巴(就是复制前一个图)
用Startdarg隐藏鼠标,然后怎么用duplicateMovieClip来做出那个尾巴
请教高手指点 急急急啊
 
 

正确答案
第一帧的句如下:
duplicateMovieClip(aa, "aa"+i, i);
startDrag("aa"+i, true);
i = i+1;
if (i>50) {
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:Boolean;
onMouseMove=function(){Mouse.hide();

con=true;}
onEnterFrame=function(){if(con){
c.duplicateMovieClip("c"+n++,n);}
}
最后,ctrl+enter测试可以发现这就是你要的效果了^_^
作出来了不要忘了谢谢我啊^_^

----------------------------------------------------------------------------------------------------->>
关于random( )的使用问题

FLASH中如何实现随机出现MC,假如我做一个MC(泡泡上升),名字是“paopao",如何通过AS实现场景中随机出现好多大小不同,Alpha不同的泡泡。具体代码不知道谁能帮忙写出,谢谢。
 
 
这里有个类似的教程:

http://www.flashempire.com/school/tutorview.php?id=472
 

假设我按那个教程来做,不要随机数字的出现,这样直接用代码可以实现泡泡随机出现的效果吗?究竟哪里错了。
var n = 1;
//声明变量
onEnterFrame = function () {
// 逐帧调用
if (n != 45) {
// 如果n不等于45
n++;
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);
// 透明度
bb = random(50)+70;
setProperty(this["a1"+n], _xscale, bb);
// x比例
setProperty(this["a1"+n], _yscale, bb);
// y比例
trace(n);
} else {
// 否则,n重新为0
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层次
场景
MC1
MC2
MC3


在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];
}
}
else
{
tt.text="Read error!"
}

tt是动态文本的名字,在MC2中,和按钮在同一层,变量为text

data.txt里内容:AGE=0&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层次是这样的
场景
- MC1
- MC2
日记本是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 (keyPress "") {
gotoAndPlay(1);
}

 
 

用回车键确定的代码是on(keyPress ""){},不过这个命令只用于按钮元件
你可以做一个影行按钮元件
判断文字对不对就可以用if语句了
不知道我说的对不对
要是不对请高手指出^_^
 
 

正确答案
if(Key.isDown(Key.ENTER))
{
if(focusManager.getFocus() == yourInputText)
{
……;//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来实现,不知道是不是真的。
http://www.buick.com/rainier/colors/
上面是别克的网站,代码我看了,老外的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 (inconer1<0) {

    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 (inconer2<0) {

    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.abs (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._x<256) 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等组件的可自订与安装以及可以导入AVI等格式文件的功能,使Flash在各方面的功能均大大好于以往。兴奋之余,笔者决定用它来完成第二篇文章——《光的反射与折射》。

请看下面的特效图:

 

在上图中,我们可以拖动入射光线旁的小手电以改变入射光线的入射角度,还可以在文本框内输入两种介质的折射率。从面板中的文本框内我们还可以实时地了解到入射角、反射角及折射角的大小。

以上效果是如何实现的呢?

首先,我们需要制作本软件中所需的手电筒、入射光线、反射光线、折射光线等组件,并分别命名为:movedot、line1、line2、line3。然后建立两个“Input”型的文本框,分别命名为:n1、n2,用以改变两种介质的折射率。最后建立三个“Dynamic”型的文本框,用以显示入射角、反射角及折射角的角度,分别命名为:coner1、coner2、coner3。

好,所需的主要组件已经完成,下面我们为各组件加入相应的Actions。

我们知道,光线折射时总遵循以下定律(在本软件中,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 (x<0) {

    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);//设置手电旋转

以上处理的是反射光线与入射光线的关系,下面我们要处理的是折射光线与入射光线的关系。

新建一层,并在第一帧加入以下Actions:

//这一部分是关键,主要设置折射光线的变化

fscommand("fullscreen", "true");//全屏

fscommand("allowscale", "0");//禁止调节显示屏

angle1 = _root.one._rotation;//获取入射光线旋转角度

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<n2)and(_root.movedot._y>_root.dot._y)) {

    setProperty(_root.three, _rotation, angler);

}

coner1 = angle1;//获取入射角

coner3 = angler;//获取折射角

if (coner1<0) {

    coner1 = -coner1;

}

if (coner1>90) {

    coner1 = 180-coner1;

}

coner2 = coner1;

if (coner2<0) {

    coner2 = -coner2;

}

if (coner3>90) {

    coner3 = 180-coner3;

}

if (coner3<0) {

    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);

}

通过以上Actions的作用,我们就可以实现上图中的大部分功能了(您可以参照上图稍作修饰)。

为了使该软件使用起来更方便,我们还可以借助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.abs ( _root.ball._x-_root.candle._x);//强制物距转化为正数

if (uu<jjj) {

    setProperty ("_root.bp", _visible, 0);//用“bp”(白屏)的有无表示所成像的实、虚。

} else {

    setProperty ("_root.bp", _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.bp", _x, _root.ball._x-v);//使白屏的位置与像的位置一致

} else 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.bp", _x, _root.ball._x+v);使白屏的位置与像的位置一致

} else {

    setProperty ("_root.candle1", _visible, 0);//当像与透镜重合时,让像不可见。

}

我们知道,当焦距小于0或物距小于焦距时,透镜成的像为虚像,为实现此效果,我们可以继续加入以下代码:

if ((jjj<0) or (uu)<jjj) {

    setProperty (_root.bp, _visible, 0);//如果焦距小于0或物距小于焦距,设置白屏不可见。

} else {

    setProperty (_root.bp, _visible, 1);

}

if (jjj<0) {

    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);//“ball”为一新建组件,属性为“不可见”,将它作为透镜的光心

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 (u<0) {

    setProperty (_root.line1, _xscale, -v/1.55);

} else if (u>0) {

    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强大的编程功能加上自动演示、表格数据处理等功能,在此不再赘述。

需要特别指出的是,在实际调拭程序的过程中,并不能保证课件效果随时随我们的思想改变而改变,也许我们会遇到各种各样甚至奇怪的问题,这时侯我们需要的冷静与耐心,要知道:实现同一种效果的方法不仅一种,当一种方法行不通时,我们可以尝试另一种方法,问题往往会迎刃而解。如:在该课件的实现过程中,笔者很为白屏的有无费了一番脑筋,因为在使用“setProperty ("_root.bp", _visible, 0);”语句时存在冲突,当想隐藏白屏时总也隐藏不了,在这种情况下,笔者想到了将白屏的位置设置到场景外,测试时的效果与当初的想法一样。

Flash MX 在物理教学中的应用

                                ——分子动理论

Flash的魅力是无穷的,这很容易让人想起New fish曾说过的“只有你想不到的,没有它做不到的”这句话,每当有人问我:“Flash能做什么?”这个问题时,我总反问:“你想做什么?”——是啊,你想做什么?做动画?网页?课件?广告?游戏?——这些Flash全能做。翻翻初三物理课本,发现课本将“分子运动论”这一节竟改成了“分子动理论”,总觉得不如原来的课题好,心里一时转不过弯来。这节课倒是一个很好的“作点”(适于做课件的一个知识点),先不管课题了,还是想想如何来实现分子的运动与碰撞吧!——天哪!好难!

请看下面的特效图:

 

(分子应该是圆形的呀,怎么是方形的?)

新建一白色圆Movieclip,命名为“ball”(就是上面那个绿色小球啊),再新建成一白色圆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",并加入以下代码:

n = 0;

新建一层,命名为“variable”,并加入以下代码:

fscommand("fullscreen", "true");//全屏显示

fscommand("allowscale", "0");//禁止缩放

total_circles = 18;//分子个数

movie_width = 500;//场景宽度

movie_height = 400;//场景高度

speed = 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(/:speed));//设置分子的随机y速度

    xmov = Number(random(/:speed));//设置分子的随机x速度

    //

    // 选取一个初始的运行方向:

    ysign = random(2)-1;

    if (Number(ysign) == 0) {

        ysign = 1;

    }

    xsign = random(2)-1;

    if (Number(xsign) == 0) {

        xsign = 1;

    }

    // 调整x、y方向上的速度

    xmov = xmov*xsign;

    ymov = ymov*ysign;

}

//分子碰撞到壁时的处理

if (Number(my_x)<=Number(Number(my_radius)+Number(/:speed))) {

    xmov = xmov*-1;

    my_x = Number(my_radius)+Number(/:speed);

}

if (Number(my_y)<=Number(Number(my_radius)+Number(/:speed))) {

    ymov = ymov*-1;

    my_y = Number(my_radius)+Number(/:speed);

}

if (Number(my_x)>=Number(/:movie_width-my_radius-/:speed)) {

    xmov = xmov*-1;

    my_x = /:movie_width-my_radius-/:speed;

}

if (Number(my_y)>=Number(/:movie_height-my_radius-/:speed)) {


    ymov = ymov*-1;

    my_y = /:movie_height-my_radius-/:speed;

}

n = 1;

// 分子间发生碰撞时的处理

while (Number(n)<=Number(/:total_circles)) {

    // don't check myself

    if (n ne my_n) {

        n_x = getProperty("../" add n, _x);

        n_y = getProperty("../" add n, _y);

        n_radius = (getProperty("../" add n, _width)/2);

        delta_x = (Number(my_x)+Number(xmov))-(n_x);

        delta_y = (Number(my_y)+Number(ymov))-(n_y);

      if (Number((Number(delta_x*delta_x)+Number(delta_y*delta_y)))<Number(((Number(my_radius)+Number(n_radius))*(Number(my_radius)+Number(n_radius))))) {

            nx = eval("../" add n add ":xmov");

            ny = eval("../" add n add ":ymov");

            // swap travel values with it.

            tempx = xmov;

            xmov = nx;

            set("../" add n add ":xmov", tempx);

            tempy = ymov;

            ymov = ny;

            set("../" add n add ":ymov", tempy);

            set("../" add n add ":collision", my_n);

        } else {

        }

    }

    n = Number(n)+1;

}

setProperty("", _x, Number(my_x)+Number(xmov)*/:m);//调整分子的x位置

setProperty("", _y, Number(my_y)+Number(ymov)*/:m);//调整分子的y位置

第三帧:gotoAndPlay(_currentframe-1);

下面,我们新建一些按钮,以方便对该课件运行的控制。

新建一Button,命名为“继续按钮”,并加入以下代码:

on (release) {

    with (_root.o) {

        gotoAndPlay(1);

    }

}

新建一Button,命名为“停止按钮”,并加入以下代码:

on (release) {

    with (_root.o) {

        stop();

    }

}

新建一Button,命名为“显示轨迹按钮”,并加入以下代码:

on (release) {

    setProperty("_root.ball", _visible, 1);

    with (_root.pathact) {

        gotoAndPlay(2);

    }

}

新建一Button,命名为“隐藏轨迹按钮”,并加入以下代码:

on (release) {

    with (_root.pathact) {

        gotoAndStop(1);

    }

    while (/:ballnum>=0) {

        removeMovieClip("ball"+ballnum);

        /:ballnum = /:ballnum-1;

    }

    setProperty("ball"+/:ballnum, _visible, 0);

    setProperty(_root.ball, _visible, 0);

}

新建一Button,命名为“减少分子个数按钮”,并加入以下代码:

on (release) {

    removeMovieClip(n);

    n = n-1;

}

新建一Button,命名为“增加分子个数按钮”,并加入以下代码:

on (release) {

    n = n+1;

    duplicateMovieClip(o, n, n);

    tellTarget (n.color) {

        gotoAndStop(n+1);

    }

    setProperty(n, _x, random(500));

}

新建一Button,命名为“加快速度按钮”,并加入以下代码:

on (release) {

    /:m = /:m+1;

    if (/:m>=6) {

        /:m = 6;

    }

}

新建一Button,命名为“减小速度按钮”,并加入以下代码:

on (release) {

    /:m = /:m-1;

    if (/:m<=0) {

        /:m = 1;

    }

}

天哪,代码好长啊!真不知道当时是如何做出来的!如果让我重写这段代码的话,还不如让我请你客呢!——当然啦,你掏钱!

笔者注:以上部分是核心代码,不明白的地方请参看源文件!

 

 


Flash MX 在物理教学中的应用

                                      ——机械运动

今天我们来看一个经典的Flash作品,这个作品最初见于新宇等人所著的“网页飞花”,笔者过去将其实现的时候着实高兴了一阵子,一直舍不得将其丢弃,现在笔者将其作了进一步的修改,使它用起来更方便。从这个例子,各位可以窥见Flash MX Actionscript的强大功能(也正是这个例子坚定了笔者努力学习Flash的决心)。

请看下面的特效图:

 

首先,我们需要新建一Moveiclip,在其中放一个球(长40,宽40,只要看着顺眼就可以了),并将该球转化为Button,在该Button上加入以下代码:

on (press) {

    startDrag("", false, /:minx, /:miny, /:maxx, /:maxy);//防止ball被拖动时出界

    tellTarget ("/mouse") {

        play();

    }

    /:mouse = "dragged";

}

on (release) {

    stopDrag();//停止拖动

    tellTarget ("/mouse") {

        gotoAndStop(1);

    }

    /:mouse = "not dragged";

}

然后将整个Movieclip命名为“ball”,

新建一层,命名为“显示文本”,并在其第二帧加入以下代码:

OLDXPOS1 = OLDXPOS-70;//以使小球的x坐标显示在场景中

OLDYPOS1 = OLDYPOS-40;//以使小球的y坐标显示在场景中

新建一层,命名为“磨擦系数滚动条层”,在第一帧加入以下代码,并延长至三帧:

/:gravity1 = /:gravity*10;//因为gravity是小数,帮需将其扩大10倍。

 

新建一Movieclip,并命名为“重力加速度滚动条”,如图2所示(其中绿色小球可以拖动),用其控制gravity1的大小,并在该Movieclip上加入以下代码:

onClipEvent (enterFrame) {

    len1 = getProperty (条,_x );

    len2 = getProperty (球子,_x );

    /:gravity = (len2-len1+105.25-0.5-4)/200;

    /:gravity1 = /:gravity*10;

}

复制“重力加速度滚动条”Movieclip(也就是上图2),并重新命名为:“磨擦系数滚动条”,并在该Movieclip上加入以下代码:

onClipEvent (enterFrame) {

    len1 = getProperty (条1,_x );//该Movieclip内长条命名为“条1”

    len2 = getProperty (球子1,_x );该Movieclip内可拖动球命名为“条1”

    /:friction = (len2-len1+105.1-0.5-4)/200;//调节磨擦系数的大小

}

新建一层,命名为“control”,并在其第一帧加入以下代码:

minx = "80";//ball的左界

maxx = "480";//ball的右界

miny = "50";//ball的上界

maxy = "350";//ball的下界

gravity = "0.098";//ball的默认重力加速度,相当于9.8N/kg

friction = "0.9";//ball的默认磨擦系数

fscommand("fullscreen", "true");//全屏

在control 层第二帧加入以下代码:

if (/:mouse ne "dragged") {//如果小球未被拖动,则执行以下代码

    /:yspeed = Number(/:yspeed)+Number(/:gravity);//计算速度的公式:Vt=V0+gt

    oldypos = getProperty("/ball", _y);//获取ball的y位置

    oldxpos = getProperty("/ball", _x);//获取ball的x位置

    newypos = Number(oldypos)+Number(yspeed);//设置ball的新的y位置

    newxpos = Number(oldxpos)+Number(xspeed);//设置ball的新的x位置

    if ((Number(newypos)>Number(/:maxy)) or (Number(newypos)<Number(/:miny))) {//如果球y方向出界,则执行以下代码

        newypos = oldypos;//小球回到原位置

        yspeed = (-1*/:yspeed)*(1-/:friction);//小球发生碰撞y方向的处理

        /:xspeed = /:xspeed*(1-/:friction);//小球发生碰撞x方向的处理

        tellTarget ("sound") {

            gotoAndPlay(1);

        }

    }

    if ((Number(newxpos)>Number(/:maxx)) or (Number(newxpos)<Number(/:minx))) {//如果球x方向出界,则执行以下代码

        /:xspeed = (-1*/:xspeed)*(1-/:friction);//小球发生碰撞x方向的处理

        newxpos = oldxpos;//小球回到原位置

        tellTarget ("sound") {

            gotoAndPlay(1);

        }

    }

    setProperty("/ball", _y, newypos);//设置ball的新的y位置

    setProperty("/ball", _x, newxpos);//设置ball的新的x位置

}

在control 层第三帧加入以下代码:

gotoAndPlay(2);

新建一空的Movieclip,命名为“mouse”,并在其第一帧加入以下代码:

stop();

在其第二帧加入以下代码:

newx = getProperty("/ball", _x);//获取ball的x位置

/:xspeed = (newx-oldx)*0.5;//获取ball的x方向上的速度

oldx = newx;

在其第三帧加入以下代码:

newy = getProperty("/ball", _y);//获取ball的y位置

/:yspeed = (newy-oldy)*0.5;//获取ball的y方向上的速度

oldy = newy;//重新获取ball的y位置

gotoAndPlay(2);

至此,该课件的主体部分基本完成,在实际调试的过程中,可能会遇一些小问题,笔者建议您参照源文件看一下。(怎么还是这句话呀!)

 

Flash MX 在物理教学中的应用

                                                 ——物理画板

下面这个例子是我某日心血来潮而完成的,可以说,它综合了以往所有课件的大部分Actions,堪称“经典”(偶尔吹一小下也不为过吧),并且,它还在不断的完善中,闲话少叙,咱们还是先来看看它是如何完成的吧!

请看下面的特效图:

 

在本软件中的左边部分,是一系列的绘图工具,到底是绘什么图的,您一看便知。顶部是“新建”、“删除”、“复制”(这可是真正的复制啊!)、“文字”、“橡皮”等工具,最右边的是“工具栏选项”的下拉菜单,包括:“常用工具栏”、“力学工具栏”、“光学工具栏”、“电学工具栏”等几项。

 

限制层代码:while (eval(name).hitTest(border1) ) {

    stopDrag();

    eval(name)._x = eval(name)._x+10;

}

while (eval(name).hitTest(border2) ) {

    stopDrag();

    eval(name)._x = eval(name)._x-10;

}

while (eval(name).hitTest(border3) ) {

    stopDrag();

    eval(name)._y = eval(name)._y+10;

}

while (eval(name).hitTest(border4) ) {

    stopDrag();

    eval(name)._y = eval(name)._y-10;

}

back and actioms:

if (eval(name).hitTest(border1) ) {

    /:mess = "1";

    eval(name)._x = eval(name)._x+10;

} else {

    /:mess = "0";

}

if (eval(name).hitTest(border2) ) {

    /:mess = "1";

    eval(name)._x = eval(name)._x-10;

} else {

    /:mess = "0";

}

if (eval(name).hitTest(border3) ) {

    /:mess = "1";

    eval(name)._y = eval(name)._y+10;

} else {

    /:mess = "0";

}

if (eval(name).hitTest(border4) ) {

    /:mess = "1";

    eval(name)._y = eval(name)._y-10;

} else {

    /:mess = "0";

}

 

放基本图形及按钮:

fscommand("showmenu", "0");

xscale = 100;

yscale = 100;

 

任何线程序层:

if (Number(/:mouse) == 1) {

    if (Number(/:x1) == 0) {

        x1 = int(getProperty("mc", _x));

        y1 = int(getProperty("mc", _y));

    } else {

        x0 = int(getProperty("mc", _x));

        y0 = int(getProperty("mc", _y));

        if (Number(((x0-x1)*(x0-x1)))>5 or Number(((y0-y1)*(y0-y1)))>5) {

            n = Number(n)+1;

            duplicateMovieClip("line", "line" add n, n);

            setProperty("line" add n, _x, x1);

            setProperty("line" add n, _y, y1);

            setProperty("line" add n, _xscale, (x0-x1));

            setProperty("line" add n, _yscale, (y0-y1));

            x1 = x0;

            y1 = y0;

        }

    }

}

 

新建层按钮:

on (release) {

    setProperty(music, _alpha, 0);

    unloadMovie(music);

    num = 0;

    removeMovieClip(copy);

    while (num<=200) {

        removeMovieClip("copy"+num);

        removeMovieClip("line"+num);

        removeMovieClip("点"+num);

        removeMovieClip("箭头"+num);

        removeMovieClip("弧"+num);

        removeMovieClip("虚箭头"+num);

        removeMovieClip("抛物线"+num);

        removeMovieClip("曲线"+num);

        removeMovieClip("电阻箱"+num);

        removeMovieClip("三角形"+num);

        removeMovieClip("四边形"+num);

        removeMovieClip("五边形"+num);

        removeMovieClip("圆"+num);

        removeMovieClip("虚线圈"+num);

        removeMovieClip("直角"+num);

        removeMovieClip("直线"+num);

        removeMovieClip("干电池"+num);

        removeMovieClip("电池组"+num);

        removeMovieClip("电灯"+num);

        removeMovieClip("电铃"+num);

        removeMovieClip("电动机"+num);

        removeMovieClip("保险丝"+num);

        removeMovieClip("插座"+num);

        removeMovieClip("保险丝"+num);

        removeMovieClip("开关"+num);

        removeMovieClip("滑动变阻器符号"+num);

        removeMovieClip("滑动变阻器实物"+num);

        removeMovieClip("灯泡实物"+num);

        removeMovieClip("电池"+num);

        removeMovieClip("万用表"+num);

        removeMovieClip("开关实物"+num);

        removeMovieClip("电压表表盘2"+num);

        removeMovieClip("电流表表盘2"+num);

        removeMovieClip("立体电压表2"+num);

        removeMovieClip("立体电压表1"+num);

        removeMovieClip("立体电流表2"+num);

        removeMovieClip("立体电流表1"+num);

        removeMovieClip("单个蓄电池"+num);

        removeMovieClip("电能表"+num);

        removeMovieClip("电阻箱"+num);

        removeMovieClip("蓄电池组"+num);

        removeMovieClip("条形磁铁"+num);

        removeMovieClip("蹄形磁铁"+num);

        removeMovieClip("带磁感线的条形磁铁"+num);

        removeMovieClip("带磁感线的蹄形磁铁"+num);

        removeMovieClip("小磁针"+num);

        removeMovieClip("螺线管"+num);

        removeMovieClip("立体蹄形磁铁"+num);

        removeMovieClip("线圈"+num);

        removeMovieClip("蹄形螺线管"+num);

        removeMovieClip("平面镜"+num);

        removeMovieClip("凸面镜"+num);

        removeMovieClip("凹面镜"+num);

        removeMovieClip("凸透镜"+num);

        removeMovieClip("凹透镜"+num);

        removeMovieClip("水面"+num);

        removeMovieClip("眼睛"+num);

        removeMovieClip("托盘天平"+num);

        removeMovieClip("测力计"+num);

        removeMovieClip("单滑轮"+num);

        removeMovieClip("双滑轮"+num);

        removeMovieClip("体温计"+num);

        removeMovieClip("量筒"+num);

        removeMovieClip("压强计"+num);

        removeMovieClip("试管"+num);

        removeMovieClip("刻度尺"+num);

        removeMovieClip("球"+num);

        removeMovieClip("手电筒"+num);

        removeMovieClip("蜡烛"+num);

        removeMovieClip("白屏"+num);

        removeMovieClip("文字"+num);

        removeMovieClip("弹簧"+num);

        removeMovieClip("小车"+num);

        setProperty("字母"+num, _y, -200);

        setProperty("数字"+num, _y, -200);

        num = num+1;

    }

    setProperty(name, _x, -200);

    setProperty(name, _y, -200);

    n = n-1;

    if (n<=0) {

        n = 0;

    }

    m = m-1;

    if (m<=0) {

        m = 0;

    }

    p = p-1;

    if (p<=0) {

        p = 0;

    }

    n = 0;

}

复制按钮:

on (release) {

    dotx = eval(/:name).dot._x;

    doty = eval(/:name).dot._y;

    dot1x = eval(/:name).dot1._x;

    dot1y = eval(/:name).dot1._y;

    dot2x = eval(/:name).dot2._x;

    dot2y = eval(/:name).dot2._y;

    dot3x = eval(/:name).dot3._x;

    dot3y = eval(/:name).dot3._y;

    dot4x = eval(/:name).dot4._x;

    dot4y = eval(/:name).dot4._y;

    point0x = eval(/:name).point0._x;

    point0y = eval(/:name).point0._y;

    point1x = eval(/:name).point1._x;

    point1y = eval(/:name).point1._y;

    point2x = eval(/:name).point2._x;

    point2y = eval(/:name).point2._y;

    point3x = eval(/:name).point3._x;

    point3y = eval(/:name).point3._y;

    duplicateMovieClip(name, "copy" add u, 1000+u);

    setProperty(eval("copy" add u).dot, _x, /:dotx);

    setProperty(eval("copy" add u).dot, _y, /:doty);

    setProperty(eval("copy" add u).dot1, _x, /:dot1x);

    setProperty(eval("copy" add u).dot1, _y, /:dot1y);

    setProperty(eval("copy" add u).dot2, _x, /:dot2x);

    setProperty(eval("copy" add u).dot2, _y, /:dot2y);

    setProperty(eval("copy" add u).dot3, _x, /:dot3x);

    setProperty(eval("copy" add u).dot3, _y, /:dot3y);

    setProperty(eval("copy" add u).dot4, _x, /:dot4x);

    setProperty(eval("copy" add u).dot4, _y, /:dot4y);

    setProperty(eval("copy" add u).point1, _x, /:point1x);

    setProperty(eval("copy" add u).point1, _y, /:point1y);

    setProperty(eval("copy" add u).point2, _x, /:point2x);

    setProperty(eval("copy" add u).point2, _y, /:point2y);

    setProperty(eval("copy" add u).point3, _x, /:point3x);

    setProperty(eval("copy" add u).point3, _y, /:point3y);

    setProperty(eval("copy" add u).point4, _x, /:point4x);

    setProperty(eval("copy" add u).point4, _y, /:point4y);

    u = u+1;

}

删除按钮:

on (release, keyPress "<Delete>") {

    setProperty(music, _alpha, 0);

    unloadMovie(music);

    removeMovieClip(name);

    setProperty(name, _x, -200);

    setProperty(name, _y, -200);

    n = n-1;

    if (n<=0) {

        n = 0;

    }

    m = m-1;

    if (m<=0) {

        m = 0;

    }

    p = p-1;

    if (p<=0) {

        p = 0;

    }

}

文字按钮:

on (release) {

    xscale = 100;

    yscale = 100;

    n = n+1;

    duplicateMovieClip("_root.文字", "文字"add n, n);

    name = "文字"add n;

    setProperty("文字"add n, _x, 300);

    setProperty("文字"add n, _y, 100);

}

橡皮按钮:

on (release) {

    setProperty(_root.橡皮, _x, 100);

    setProperty(_root.橡皮, _y, 100);

}

各个组件上的程序:

onClipEvent (mouseDown) {

    if (this.hitTest(_root._xmouse,_root._ymouse,0)) {

        /:name = this._name;

        startDrag("");

    }

}

onClipEvent (mouseUp) {

    stopDrag();

}

onClipEvent (enterFrame) {

    if (this.hitTest(_root._xmouse,_root._ymouse,0) and /:drag==1) {

        this.removeMovieClip();

    }

    if (this.hitTest(_root.border1) or this.hitTest(_root.border2) or this.hitTest(_root.border3) or this.hitTest(_root.border4)) {

        this.removeMovieClip();

    }

}

工具栏按钮:

on (release) {

    xscale = 100;

    yscale = 100;

    n = n+1;

    duplicateMovieClip("_root.托盘天平", "托盘天平"add n, n);

    name = "托盘天平"add n;

    setProperty("托盘天平"add n, _x, 480);

    setProperty("托盘天平"add n, _y, 300);

}

 

这个软件的代码太长了,笔者没有逐一讲解,如果大家感兴趣又不嫌太麻烦的话,你可以从头至尾好好看一下,我想,这或许对你是很有好处的。在这儿,笔者想就本软件中几个重要的知识点作分别作以下讲解:

1、复制:通常情况下的MovieClip0复制用的是“duplicateMovieClip”命令,用该命令时,复制出来的MovieClip1与MovieClip0的原型是一样的,如果我们对MovieClip1做了改动并且希望下一个复制对象MovieClip2与MovieClip1完全一样应该怎么办呢?这就关系到别的方面的问题了。据笔者研究发现,决定一MovieClip外形的属性不外乎是MovieClip的_x,_y,_xscale,_yscale及_rotation属性,只要我们设置MovieClip2的上述属性与MovieClip1的属性完全一样就可以了。

2、选取与控制:想用鼠标和键盘对几个MovieClip进行控制吗?这是需要一些技巧的。你可以建一个象上述特效图中的“我要删除:”后的文本框来解决这个问题;每当我们用鼠标选取一个MovieClip,便用该文本框获取该MovieClip的_name属性,有了名字,当然也就好控制了。

 

Flash MX 在物理教学中的应用

                                           ——弹簧振子

在物理教学中,我们经常要用到弹簧振子,现在我们就来看一下如何用Flash MX实现弹簧振子振动的效果。

请看下面的特效图:

 

在上图的窗体上方,有“清除”、“暂停”、“继续”三个Button,其功能分别是清除轨迹、暂停振动、继续振动。用鼠标拖动图中的小球,弹簧振子便可按实际情况振动。

以上效果是如何实现的呢?

首先,我们需要制作描点用的MovieClip(随便点上一个点就行了),并命名为:"tr";然后新建一个名为“弹簧”的MovieClip,移动其中心至MovieClip的上端中点处,以使其长度发生变化时以顶端为基点;再新建一个名为“球”的MovieClip,作为“振子”,并在该MovieClip上加入以下代码:

 

on (press) {

    startDrag(this, true, 260, 100, 260, 380);

//以下代码使程序在主场景运行

    tellTarget (_root) {

        gotoAndPlay(2);

    }

}

on (release) {

    stopDrag();

    tellTarget (_root) {

        gotoAndPlay(4);

    }

}

 

新建一层,命名为:Action。

在第一帧加入以下代码:

n = 0;//初如始化描点个数

在第二帧加入以下代码:

dis = 球._y-弹簧._y;//获取球与弹簧间的纵坐标距离

setProperty("弹簧", _yscale, dis/3);//当鼠标拖动小球时,改变弹簧的长度

在第三帧加入以下代码:

gotoAndPlay(2);//让弹簧的长度及时得到调整

在第四帧加入以下代码:

m = (Math.sin (n)*dis)/5;

setProperty("球", _y, 250-m*2);//松开鼠标时,自动调整球的位置

duplicateMovieClip(_root.tr, "tr" add n, n*10);//开始描点

setProperty("tr"add n, _x, n*5);//设置描点的x位置

setProperty("tr"add n, _y, -m/7+200);//设置描点的y位置

n = n+0.5;

dy = 球._y-弹簧._y;//作用同上

setProperty("弹簧", _yscale, dy/3);//作用同上

在第五帧加入以下码:

gotoAndPlay(4);

现在拖动小球试试,看到效果了吧?

这个小软件的制作方法是不是比前几个简单多了?其它的功能很简单,你自己加上吧!


------------------------------------------------------------------------------------------------------->>>>
怎样用文本控制链接
我用flashmx做了一个导航菜单,可是在今后修改链接很麻烦,近日听说可以用文本来控制链接,想请问如何用文本文件来控制flash里的链接?
在此先谢谢回答问题的各位了!
 
 

这个分2个步骤来:
1.新建一个文本文件,文件名为:1.txt,打开文本输入:a=http://www.km169.net,保存
2.打开你的Flash原文件,新建一个层,在这个层里加代码:loadVariablesNum("1.txt", 0);
在你要加的按扭上加Action:

on (press) {
getURL(_root.a, "_blank");
}

 

我在1.txt里面,做一个链接,是可以,可是,做很多链接,就不行了,请问,我怎么样做才可以?
 


文本文件(文件名假设为link.txt)
count=3&link1=http://www.flashempire.com/&link2=http://blog.thors.cn/&link3=http://www.163.com

as代码:
var link_lv:LoadVars=new LoadVars();
link_lv.onLoad=function(success)
{
if(success)
{
for(var i=0;i {
trace(this["link"+(i+1)]);
}
}
else
{
trace("装载失败");
}
}
link_lv.sendAndLoad("link.txt",link_lv,"get");
 

原因是一个文本文件只能控制一个按钮的连接.如果要给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

接下来按照
打开你的Flash原文件,新建一个层,在这个层里加代码:loadVariablesNum("1.txt", 0);
在你要加的按扭上加Action:

on (press) {
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 (press) {
getURL(_root.a, "_blank");
}

on (press) {
getURL(_root.b, "_blank");
}
……
on (press) {
getURL(_root.e, "_blank");
}

这种方法很笨拙,能达到这个效果。我对脚本一窍不通,试出来的。

 

谢谢各位的指点,我把sean820123与thor_cn的方法做了一个合并,达到了我所想要的预期效果。
分2个步骤来:
1.新建一个文本文件,文件名为:1.txt,打开文本输入:a=http://www.km169.net,
(如果做多个链接,在变量前加"&":
&a=http://www.flashempire.com/
&b=http://blog.thors.cn/
&c=http://www.163.com)
然后保存。
2.打开你的Flash原文件,新建一个层,在这个层里加代码:loadVariablesNum("1.txt", 0);
在你要加的按扭上加Action:

on (press) {
getURL(_root.a);
}
这样就OK了。
在此我要再次谢谢各位!
 

------------------------------------------------------------------------------------------------------------>>>>
请教!显示北京时间的问题
我设计了一个动画,想让这动画显示北京时间,制作出来的数字不会动;也试过在第二帧加循环gotoAndPlay(1),但是整个动画就无法进行下去,总是停在第一帧。应该怎样调整或设置?
 
 
正确答案
用AS中Date()类很容易实现:
1 用文字工具在舞台上画一个文本范围,更改其属性为“动态文本”,并且是“多行”的。
2 新建一层,在这层的第一帧,也是唯一的一个关键帧(其他全是普通帧,总帧数与当前场景的最大帧数一致)上加上加如下AS:
onEnterFrame = function () {
var mydate = new Date();
var year = mydate.getFullYear();
var month = mydate.getMonth()+1;
var date = mydate.getDate();
var day = mydate.getDay();
var time = mydate.getTime();
var hour = mydate.getHours();
var minute = mydate.getMinutes();
var second = mydate.getSeconds();
mytime = "现在是"+year+"年"+month+"月"+date+"日"+" "+"周"+day+"/n"+hour+"点"+minute+"分"+second+"秒"+"/n"+"当前页面已打开:"+getTimer();
time_text.autoSize = true;
};
注:其中不仅显示年、月、日、时间,还显示周几和已经打开页面的时间(单位:毫秒),使用时可以删除不必要的参数,见笑。
 

漏了一句:动态文本的名称-time_text,动态文本的变量名-mytime
 


谢谢 adam.wu!!!我设计的程序中,就是少了onEnterFrame=function(){}语句。现在可以了。非常感谢!!!!!!!!!!!!!!!
 

----------------------------------------------------------------------------------------->>>
temp=var i = -1;
_root.createTextField("m_txt", 0, 20, 200, 500, 40);//建立个文本 var my_lv = new LoadVars();
my_lv.onLoad = function(success) {//载入的判断
if (success) {
trace(my_lv.temp);
run();//如果成功载入就执行自定义的run方法
} else {
stop();
}
};
my_lv.load("sample.txt");//载入外部文本
function run() {
onEnterFrame = function () {//自定义的文字显示方法
if (++i<=my_lv.temp.length) {
m_temp = my_lv.temp.substr(i, 1);
m_txt.text += m_temp;
} else {
delete onEnterFrame;
}
};
}var i = -1;
_root.createTextField("m_txt", 0, 20, 200, 500, 40);//建立个文本 var my_lv = new LoadVars();
my_lv.onLoad = function(success) {//载入的判断
if (success) {
trace(my_lv.temp);
run();//如果成功载入就执行自定义的run方法
} else {
stop();
}
};
my_lv.load("sample.txt");//载入外部文本
function run() {
onEnterFrame = function () {//自定义的文字显示方法
if (++i<=my_lv.temp.length) {
m_temp = my_lv.temp.substr(i, 1);
m_txt.text += m_temp;
} else {
delete onEnterFrame;
}
};
}var i = -1;
_root.createTextField("m_txt", 0, 20, 200, 500, 40);//建立个文本 var my_lv = new LoadVars();
my_lv.onLoad = function(success) {//载入的判断
if (success) {
trace(my_lv.temp);
run();//如果成功载入就执行自定义的run方法
} else {
stop();
}
};
my_lv.load("sample.txt");//载入外部文本
function run() {
onEnterFrame = function () {//自定义的文字显示方法
if (++i<=my_lv.temp.length) {
m_temp = my_lv.temp.substr(i, 1);
m_txt.text += m_temp;
} else {
delete onEnterFrame;
}
};
}

-------------------------------------------------------------------------------------》》
问一下,假设我要做下雪的场景,用AS做,怎么才能控制第几侦开始下,第几侦结束.答对一定给分


 


要在第几帧下,就在第几帧创建你的mc,
要在哪一帧停,就在哪帧把它remove。
 
 

雪花的MC名是mc_xue
在mc_xue这个MC上加如下代码:
onClipEvent (load)
{
d_y = int(_yscale / 50) + 3;
d_x = -random(int(_yscale / 30));
d_rotation = -10 + random(20);
}
onClipEvent (enterFrame)
{
_y = _y + d_y;
_x = _x + d_x;
_rotation = _rotation + d_rotation;
if (_y > 100)
{
_y = 0;
} // end if
if (_x < 0)
{
_x = 100;
} // end if
}

在需要下雪的帧加如下代码(当然这帧也要加mc_xue这个MC):
for (k = 0; k <= 30; k++)
{
duplicateMovieClip("mc_xue", "mc_xue" + k, k);
with (eval("mc_xue" + k))
{
_x = random(120);
_y = random(100);
_alpha = random(50) + 50;
i = random(80) + 20;
_xscale = i;
_yscale = i;
} // End of with
}
在要停止的帧加如下代码:
for (k = 0; k <= 100; k++)
{
removeMovieClip("mc_xue" + k);
} // end of for
removeMovieClip("mc_xue");

-------------------------------------------------------------------------------->>>
有关复制MC(解决了定加分)
我想制作一下下雨的效果!
首先做一个向下落的雨滴MC名为rain,有20帧,我想用duplicateMovieClip在主场景中复制很多的雨滴,位置随机,但做出来场景中只有MC:rain的第一帧在不断的闪,请问这个动画怎么做?
 请高手解答详细一些,付出会有收获的(一定加分)
 


把你的方法说详细点。
最好代码贴出来。
复制mc的深度有否设好?
 
 

for (n = 10; n < 100; n++)//复制100个
{
duplicateMovieClip("rain", "rain" + n, n);//新名和深度
setProperty("rain" + n, _x, random(550));//X轴坐标
setProperty("rain" + n, _y, random(400));//Y轴坐标
setProperty("rain" + n, _alpha, random(20) + 80);//透明度
setProperty("rain" + n, _xscale, 40 + Number(random(100)));//宽度比例
setProperty("rain" + n, _yscale, 40 + Number(random(100)));//高度比例
} // end of for
你把你做好的MC放到主场景中,点选该MC,把上述代码加上就能复制100个雨点,不过分层太明显,你的MC中如果多几个雨点的补间动画,并且上下错开就能弥补。


MC在第一层的第一帧,AS加在第二层的第一帧。
 
 

是不是你那个实例名称没有写啊,我第一次做的时候也是这样的,后来一查,原来是"实例名称"没有写,
试试看啊!

-------------------------------------------------------------------------------------------->>>>>
一个鼠标移动特效
 

 

 点击浏览该文件
 点击浏览该文件


此特效可以用作烟雾效果,残影效果
简单介绍一下制作方法

首先先要做一个特效元件,这里用的是多边形
然后在此元件内添加代码:

 

_alpha=100//初始:当前MC透明度为100
this.onEnterFrame=function(){
_rotation+=30//旋转
if(_alpha>0){
_alpha-=5//如果透明度>0则,每次透明度参数-5
}else{
this.removeMovieClip()//否则删除此MC(当透明度为0的时候)
}
}
之后在主场景加入如下代码:

var i=0//初始i
someListener = new Object();//建立新对象
someListener.onMouseMove = function () {//鼠标移动时
_root.attachMovie("man","man"+i,i++)//复制库中为“man"的MC到场景中命名为“man”+i
_root["man"+i]._x=_root._xmouse//新MC的X轴位置位于鼠标的X轴位置
_root["man"+i]._y=_root._ymouse//新MC的Y轴位置位于鼠标的Y轴位置
_root["man"+i]._height=random(30)+5//设置随机大小(高)
_root["man"+i]._width=random(30)+5//设置随机大小(宽)
if(i>200)i=0//如果i>200,则还原为0
};
Mouse.addListener(someListener);//建立鼠标侦听对象
这样就好了,很简单的一个特效
 


---------------------------------------------------------------------------------------------->>>>
FLASH AS的参数列表 [精华] 
龙眼AM
 
百事可乐


--------------------------------------------------------------------------------

CGerCN单词通: premiere [pri5mjZE] n.首次公演
基本 Action。包括:

   - Go to 跳转到指定的帧  
   - Play 播放  
   - Stop 停止  
   - Toggle High Quality 在高画质和低画质间切换  
   - Stop All Sounds 停止所有声音的播放  
   - Get URL 跳转至某个超联结  
   - FSCommand 发送FSCommand命令  
   - Load Movie 装载影片  
   - Unload Movie 卸载影片  
   - Tell Target 告知目标  
   - If Frame Is Loaded ..判断帧是否被完全载入  
   - On Mouse Event 鼠标事件

  。其他Actions。包括:

   - break 跳出循环
   - call 调用指定帧(一般喊有某个特定函数)
   - comment 注释
   - continue 继续循环
   - delete 删除一个对象(Object)中的变量
   - do while do while循环
   - duplicateMovieClip 复制MC
   - else 否则(与if联用)
   - else if 否则如果(与if联用)
   - evaluate 调用自定义函数(Function)
   - for for循环
   - for .. in 依次取得对象(Object)中的各个属性或者某个数组中的所有元素 
   - FSCommand 发送FSCommand命令
   - function 声明自定义函数
   - getURL 跳转至某个超联结
   - goto 跳转到指定的帧
   - if 如果
   - ifFrameLoaded ..帧是否完全被载入
   - include 读入外部的ActionScript程序文件(.as)
   - loadMovie 装载MC
   - loadVariables 转载外部文件中的数据,这些外部文件可以是文本文件,或者是由ASP/CGI等脚本返回的文本值
   - on 鼠标事件的触发条件
   - onClipEvent MC的事件触发程序
   - play 播放
   - print 输出到打印机
   - removeMovieClip 删除MC
   - return 在函数(function)中返回一个值
   - set variable 设定变量值
   - setProperty 设定属性
   - startDrag 开始拖动
   - stop 停止
   - stopAllSounds 停止所有声音的播放
   - stopDrag 停止拖动
   - swapDepths 交换两个MC的深度
   - tellTarget 指定Action命令生效的目标
   - toggleHighQuality 在高画质和低画质间切换
   - trace 跟踪调试
   - unloadMovie 卸载MC
   - var 声明局部变量
   - while 当..成立时..
   - with 对..对象(Object)做..

   。操作符( Operators)
   - ! 逻辑非操作
   - != 不等于
   - "" 字符串
   - % 取余数
   - && 逻辑与操作
   - () 括号
   - * 乘号
   - + 加号
   - ++ 变量自加一
   - - 减号
   - -- 变量自减一
   - / 除号
   - < 小于
   - <= 小于等于
   - <> 不等于
   - == 相等
   - > 大于
   - >= 大于等于
   - and 逻辑与
   - not 逻辑非
   - or 逻辑或
   - typeof 返回变量类型
   - void 实体,无返回
   - | | 逻辑或操作
  + Bitwise Operators 位操作符
   - & 位与操作
   - << 位左移
   - >> 位右移
   - >>> 位右移(无符号)
   - ^ 位异或操作
   - | 位或操作
   - ~ 补位操作
  + Compound Assign Operators 复合操作符
   - %= A%=B 等效于 A=A%B
   - &= A&=B 等效于 A=A&B
   - *= A*=B 等效于 A=A*B
   - += A+=B 等效于 A=A+B
   - -= A-=B 等效于 A=A-B
   - /= A/=B 等效于 A=A/B
   - <<= A<<=B 等效于 A=A<<B
   - >>= A>>=B 等效于 A=A>>B
   - >>>= A>>>=B 等效于 A=A>>>B
   - ^= A^=B 等效于 A=A^B
   - |= A|=B 等效于 A=A|B
  + String Operators 字符串操作符(注:实质上是ASCII的比较)
   - add 连接两个字符串
   - eq A eq B 字符串A值与字符串值B相等
   - ge A ge B 字符串A值大于等于字符串B值
   - gt A gt B 字符串A值大于字符串B值
   - le A le B 字符串A值小于等于字符串B值
   - lt A lt B 字符串A值小于字符串B值
   - ne A ne B 字符串A值不等于字符串B值
  + Functions 函数
   - Boolean 取表达式的布尔值(True 或 False)
   - escape 除去URL串中的非法字符,将其参数按照URL编码的格式转化为字符串(String)
   - eval 访问并计算表达式(expression)的值,并以字符串(String)的形式返回该值
   - false 布尔非值(0)
   - getProperty 获取属性
   - getTimer 获取从电影开始播放到现在的总播放时间(毫秒数)
   - getVersion 获取浏览器的FLASHPlayer的版本号
   - globalToLocal 场景(Scene)中的坐标转换成MC中的坐标
   - hitTest 测试一个点或者MC是否同另一个交叉(即冲突检测)
   - int 把十进制数值强制转换成整数
   - isFinite 测试数值是否为有限数
   - isNaN 测试是否为非数值
   - keycode 返回键盘按下键的键盘值(ASCII值)
   - localToGlobal MC中的坐标转换成场景(Scene)中的坐标
   - maxscroll 文本框的最大行度
   - newline 换行符
   - Number 将参数转换成数值其返回值有以下四种情况:

   如果 x 为一数字,则返回值即为该数字;如果 x 为一布尔数,则返回0或1;如果 x 为一字符串,则函数将x解释为一个指数形式的十进制数;如果x未定义,则返回0。
   - parseFloat 将字符串转换成浮点数
   - parseInt 将字符串转换成整数 
   - random 产生0到指定数间的随机数
   - scroll 文本框中的起始滚动行
   - String 将参数转换成字符串
   - targetPath 返回指定实例MC的路径字符串
   - true 布尔是值(1)
   - unescape 保留字符串中的%XX格式的十六进制字符
   + String Functions 字符串函数
   - chr 将ASCII码转换成相应字符
   - length 返回字符串的长度
   - mbchr 将ASCII/S-JIS编码转换成相应的多字节字符
   - mblength 返回多字节字符串的长度
   - mbord 将多字节字符转换成相应的ASCII/S-JIS编码
   - mbsubstring 截取多字节字符串中的字串
   - ord 将字符转换成ASCII码
   - substring 截取字符串中的子串
   + Properties 属性
   - _alpha Alpha值(透明度值)
   - _currentframe 在MC中的当前帧数
   - _droptarget 当使用Start drag拖动一个MC时,实时地返回该MC的绝对路径
   - _focusrect 高亮按钮或者某个当前区域的显示与否(True显示/Flase不显示)
   - _framesloaded 已载入的影帧数
   - _height MC的高度
   - _highquality 画质的高低(True高画质/False低画质)
   - _name MC的实例名  
   - _quality 当前画质(字符串值) LOW,MEDIUM,HIGH,BEST
   - _rotation MC旋转的角度(单位:度)
   - _soundbuftime 声音的缓冲区大小(默认值5,单位:秒)
   - _target MC的路径
   - _totalframes 总帧数
   - _url 电影被调用的URL地址
   - _visible 是否可视(True可视/False不可视)
   - _width MC的宽度
   - _x MC的x坐标
   - _xmouse 鼠标的x坐标
   - _xscale MC的X轴向缩放度
   - _y MC的y坐标
   - _ymouse 鼠标的y坐标
   - _yscale MC的y轴向缩放度
  + Objects 对象
   + Array 数组
    - concat 合并多个数组
    - join 将一个数组中的元素转化成字符串,并通过特定的分割符进行联结,并返回结果字符串
    - length 返回数组长度
    - new Array 新建数组对象
    - pop 出栈 (FILO 先入后出)
    - push 入栈 (入队列)
    - reverse 反相(颠倒数组,及第一个元素和最后一个元素互换……)
    - shift 出队列 (FIFO 先入先出)
    - slice 截取数组中的子串生成新的数组
    - sort 数组元素的排序
    - splice 从数组中指定元素起删除指定个数的元素或者删除指定元素
    - unshift 从数组头部插入一个元素
   + Boolean 布尔对象
    - new Boolean 新建布尔型对象
    - toString 将布尔型对象的值转换成字符串值
    - valueOf 获取布尔型对象的值(返回值为布尔型)
   + Color 颜色对象
    - getRGB 获取颜色值的RGB分量(返回值0xRRGGBB十六进制)
    - getTransform 获取颜色值的转换量(返回值 cxform 型) [不太清楚]
    - new Color 新建一颜色对象
    - setRGB 设置颜色值的RGB分量(参数为0xRRGGBB十六进制)
    - setTransform 设置颜色值的转换量(参数为 cxform 型) [不太清楚]
   + Date 时间和日期对象
    - getDate 获取当前日期(本月的几号)
    - getDay 获取今天是星期几(0-Sunday,1-Monday...)
    - getFullYear 获取当前年份(四位数字)
    - getHours 获取当前小时数(24小时制,0-23)
    - getMilliseconds 获取当前毫秒数
    - getMinutes 获取当前分钟数
    - getMonth 获取当前月份(注意从0开始:0-Jan,1-Feb...)
    - getSeconds 获取当前秒数
    - getTime 获取UTC格式的从1970.1.1 0:00以来的秒数
    - getTimezoneOffset 获取当前时间和UTC格式的偏移值(以分钟为单位)
    - getUTCDate 获取UTC格式的当前日期(本月的几号)
    - getUTCDay 获取UTC格式的今天是星期几(0-Sunday,1-Monday...)
    - getUTCFullYear 获取UTC格式的当前年份(四位数字)
    - getUTCHours 获取UTC格式的当前小时数(24小时制,0-23)
    - getUTCMilliseconds 获取UTC格式的当前毫秒数
    - getUTCMinutes 获取UTC格式的当前分钟数
    - getUTCMonth 获取UTC格式的当前月份(注意从0开始:0-Jan,1-Feb...)
    - getUTCSeconds 获取UTC格式的当前秒数
    - getYear 获取当前缩写年份(当前年份减去1900)
    - new Date 新建日期时间对象
    - setDate 设置当前日期(本月的几号)
    - setFullYear 设置当前年份(四位数字)
    - setHours 设置当前小时数(24小时制,0-23)
    - setMilliseconds 设置当前毫秒数
    - setMinutes 设置当前分钟数
    - setMonth 设置当前月份(注意从0开始:0-Jan,1-Feb...)
    - setSeconds 设置当前秒数
    - setTime 设置UTC格式的从1970.1.1 0:00以来的秒数
    - setUTCDate 设置UTC格式的当前日期(本月的几号)
    - setUTCFullYear 设置UTC格式的当前年份(四位数字)
    - setUTCHours 设置UTC格式的当前小时数(24小时制,0-23)
    - setUTCMilliseconds 设置UTC格式的当前毫秒数
    - setUTCMinutes 设置UTC格式的当前分钟数
    - setUTCMonth 设置UTC格式的当前月份(注意从0开始:0-Jan,1-Feb...)
    - setUTCSeconds 设置UTC格式的当前秒数
    - setYear 设置当前缩写年份(当前年份减去1900)
    - toString 将日期时间值转换成"日期/时间"形式的字符串值
    - UTC 返回指定的UTC格式日期时间的固定时间值
   + Key 键盘对象
    - BACKSPACE Backspace(<键
    - CAPSLOCK CapsLock键
    - CONTROL Ctrl键
    - DELETEKEY Delete(Del)键
    - DOWN 方向下键
    - END End键
    - ENTER Enter(回车)键
    - ESCAPE Esc键
    - getAscii 获取最后一个按下或松开的键的对应字符的Ascii码
    - getCode 获取最后一个被按下的键的键盘扫描码
    - HOME Home键
    - INSERT Insert(Ins)键
    - isDown 当指定键被按下时返回True值
    - isToggled 当Caps lock或者Num Lock键被锁定时返回真(True)
    - LEFT 方向左键
    - PGDN PageDown(PGDN)键
    - PGUP PageUp(PGUP)键
    - RIGHT 方向右键
    - SHIFT Shift键
    - SPACE 空格键
    - TAB Tab键
    - UP 方向上键
   + Math 数学函数对象
    - abs abs 取n的绝对值
    - acos acos n的反余弦(返回值单位:弧度)
    - asin asin n的反正弦(返回值单位:弧度)
    - atan atan n的反正切(返回值单位:弧度)
    - atan2 atan2(x,y) 计算x/y的反正切
    - ceil ceil 取靠近n的上限的整数(向上取整)
    - cos cos 取n的余弦(n的单位:弧度)
    - E Euler(欧拉)指数(约为2.718)
    - exp 指数
    - floor floor 取靠近n的下限的整数(向下取整)
    - LN10 ln10(约等于2.302)
    - LN2 ln2(约等于0.693)
    - log 取自然对数(e为底)
    - LOG10E 10为底取E的对数(约等于0.434)
    - LOG2E 2为底取E的对数(约等于1.443)
    - max 返回两参数中的最大值
    - min 返回两参数中的最小值
    - PI 圆周率(约等于3.14159)
    - pow pow(x,y) x的y次方
    - random 产生0-1间的随机数
    - round 四舍五入取整
    - sin sin 取n的正弦(n的单位:弧度)
    - sqrt 开根号
    - SQRT1_2 0.5开根号(约等于0.707)
    - SQRT2 2开根号(约等于1.414)
    - tan tan 取n的正切(n的单位:弧度)
   + MovieClip 影片夹子对象
    - attachMovie 产生一个库中MC的实体并将它绑定到某个电影上
    - dupicateMovieClip 复制当前MC产生新的MC
    - getURL 使浏览器浏览指定页面
    - gotoAndPlay 跳转到指定帧并播放
    - gotoAndStop 跳转到指定帧并停止播放
    - loadMovie 引入一个外部电影到指定层
    - loadVariables 引入外部文件中的变量值
    - nextFrame 下一帧
    - play 播放
    - prevFrame 前一帧
    - removeMovieClip 删除用duplicateMovieClip创建的MC
    - startDrag 开始拖动MC
    - stop 停止MC的播放
    - stopDrag 停止拖动MC
    - unloadMovie 卸载由loadMovie引入的Movie
   + Mouse 鼠标对象
    - hide 隐藏鼠标指针
    - show 显示鼠标指针
   + Number 数值对象
    - MAX_VALUE FLASH5 所允许的最大数值1.79769313486231 e 308
    - MIN_VALUE FLASH5 所允许的最小数值5 e -324
    - NaN 是否为非数值(Not a Number)
    - NEGATIVE_INFINITY 是否为负数
    - new Number 新建数值对象
    - POSITIVE_INFINITY 是否为正数
    - toString 将数值转换成字符串
   + Object 对象
    - new Object 新建对象
    - toString 转换对象为字符串
    - valueOf 返回对象的值
   + Selection 选择区对象
    - getBeginIndex 获取可编辑文本区的起始位置,-1表示无可编辑文本区
    - getCaretIndex 获取当前的编辑位置,-1表示没有可编辑文本区
    - getEndIndex 获取可编辑文本区的结束位置,-1表示无可编辑文本区
    - getFocus 获取当前的激活文本区的文本变量名
    - setFocus 设置当前的激活文本区
    - setSelection 设置可编辑文本的起始位置和终止位置
   + Sound 声音对象
    - attachSound 绑定库中的一个声音
    - getPan 获取声音的混音值 [不太清楚]
    - getTransform 获取当前声音的变换量(返回值类型:sxform) [不太清楚]
    - getVolume 获取当前声音的音量(百分比)
    - new Sound 新建声音对象
    - setPan 设置声音的混音值 [不太清楚]
    - setTransform 设置当前声音的变换量(参数类型:sxform) [不太清楚]
    - setVloume 设置当前声音的音量(百分比)
    - start 开始播放当前声音
    - stop 停止播放当前声音
   + String 字符串对象
    - charAt 在指定的索引表中返回一个字符
    - charCodeAt 在指定的索引表中返回一个字符的代码
    - concat 联结合并多个字符串
    - fromCharCode 从字符代码组构造出一个新的字符串
    - indexOf 在字符串中寻找子串,返回子串起始位置或-1(-1表示未找到)
    - lastIndexOf 在字符串中寻找子串,返回子串终止位置或-1(-1表示未找到)
    - length 返回字符串的长度
    - new String 新建字符串对象
    - slice 返回字符串中指定截取的子串
    - split 根据限定符将字符串转换成一个数组
    - substr substr( start, length ) 返回从start开始,共length长的子串
    - substring substring( indexA, indexB ) 返回indexA..indexB之间的子串
    - toLowerCase 将字符串中的大写字符全部转换成小写
    - toUpperCase 将字符串中的小写字符全部转换成大写
   + XML 可扩充性标记语言对象
    - appendChild 添加一个子结点到指定的XML元素
    - attributes XML元素的属性数组
    - childNodes 一个XML元素的子结点数组
    - cloneNode 克隆(复制)当前结点
    - createElement 新建一个新的XML元素
    - createTextNode 新建一个新的XML文本结点
    - firstChild 返回当前XML结点的第一个子结点
    - hasChildNodes 当前XML结点是否有子结点(返回true有子结点/flash则无)
    - insertBefore 在一个指定的XML元素的子结点前插入一个新的子结点
    - lastChild 返回当前XML结点的最后一个子结点
    - load 从指定的URL把XML元素引入FLASH中
    - loaded 当XML元素引入或是发送同时引入FLASH中后,返回true值
    - new XML 新建一个XML对象
    - nextSibling 当前XML结点的下一个结点
    - nodeName 返回当前XML结点的名字
    - nodeType 返回当前XML结点的类型(1-元素,3-文本)
    - nodeValue 返回当前XML结点的值(text型返回文本)
    - onLoad 当引入或发送同时引入时触发事件
    - parentNode 返回当前XML结点的父结点
    - par *** ML 将XML字符串转换成XML对象
    - previousSibling 当前XML结点的前一个结点
    - removeNode 从XML文本中删除结点
    - send 从FLASH中把一个XML元素发送到指定的URL地址
    - sendAndLoad 从FLASH中把一个XML元素发送到指定的URL地址同时引入XML结果
    - toString 把XML对象转换为XML字符串表达
   + XMLSocket XML套接口
    - close 关闭一个XML套接口
    - connect 连接一个XML套接口,指定URL,并定义其端口号
    - new XMLSocket 建立一个新的XML套接口
    - onClose 关闭XML套接口时触发事件
    - onConnect 连接XML套接口时触发事件
    - onXML 从服务器上获取XML时触发事件
    - send 发送XML给服务器 
 
------------------------------------------------------------------------------------------------->>>>
有关复制MC(解决了定加分)

我做了一个名为a的MC,它有21帧,第21帧上加入stop()语句,我现在的问题是:
 
  我想在主场景中每隔2帧就再复制出一个这个MC,位置随机!


 
 

你的mc的实例名称是:mc;
function donghua(){
for(var i=1;i<=100;i++){
duplicateMovieClip(_root.mc,"mc"+i,i+10);
_root["mc"+i]._x=random(400);
_root["mc"+i]._y=random(550);
}
}
timeout=setInterval(donghua,100);
把这段代码写在第一桢上,我这里是每隔100毫秒调用一次,你可以根据你的需要调整!

 
 

 

--------------------------------------------------------------------------------------------------------------->>>>>
急!按钮点击后消失的方法?

新建了个按钮,想设置为点击按钮就消失或者点击调用动画格式,请问怎么设置??
谢谢回复:)
 

选取按钮,按F9打开动作面板,写如下AS;
on (press) {//按下按钮
_root.play();//主时间轴播放
}
on (release) {//松开按钮
this._visible = false;//隐藏按钮
}

 
 

上传上去源码,请您看一下
http://www.jdtmy.com/kj.rar
http://www.jdtmy.com/kj.swf
我是想点击鼠标时播放苹果下落的画面,点鼠标即调用kj后按钮就消失,
然后有多个苹果按钮,点击一个苹果就调用kj,该苹果按钮也就随之消失,
背景图不变,点击多个苹果按钮,全部消失。
请问如何设置,
万分感谢。


 
 
on (press) {//按下按钮
attachMovie("kj","m2",3);
m2._x=n2._x;
m2._y=n2._y;
}
on (release) {//松开按钮
n2._visible = false;


}on (press) {//按下按钮
attachMovie("kj","m1",3);
m1._x=n1._x;
m1._y=n1._y;
}
on (release) {//松开按钮
n1._visible = false;


}

不要把影片kj放到时间轴上在库里鼠标右键单击KJ选链接给KJ起个名这里我用kj选中脚本倒入第一帧倒入上面是我给你写的两个按钮的脚本n1 n2是按钮实例名m1 m2是kj倒入场景新名称3是导入第3层其它的照这个样子改一改就可以了


---------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>__________________________________
怎样在主场景用AS调用库里的MC

怎样在主场景用AS调用库里的MC,我想在主场景的第一帧里加入AS,然后调用库里面的MC,请问AS怎样写,谢谢各位帮忙!!
 
 

attachMovie("tt","m1",1);
_root.m1._x=200;
_root.m1._y=200;
tt是库里MC的标识,右键单击MC选链接输入你想起的标识就可以了
m1加载影片的新名称
第二句第三句是指加载到场景中的位置
 
 

1,先打开库面板,在你要加入到场景的MC上右击选取“链接”,在弹出的对话框中选取“为动作脚本导出”和“在第一帧导出”两项,并在“标识符”一栏中取名为 ss。
2,在主场景的第一帧上写台如下AS;
attachMovie( "ss", "ss1", 2 );//把库中的链接名为ss的MC加在场景中,并为其命名为ss1,ss1不能有重名的MC
ss1._x=300;//x轴位置
ss1._y=100;//y轴位置
ssi._alpha=100;//设其透明度为100%


 
 

同意楼上两位,不过我觉得用attachMovie这个命令时,一般都会忘记把库中的mc选取“链接”,而造成无法调用mc,比如一楼那位仁兄!

 

------------------------------------------------------------------------------------------------------>>>>>>>>>>>>>>>>>>>>>>
怎样使用按纽跳转到另外一个场景!

gotoAndStop(4)是跳转到同一场景的第4贞并停止播放,
括号里面写什么才会跳到场景2的第4贞??
 


正确答案
gotoAndPlay("Scene2",4);
scene2是你第二个场景的名称,4就是第四桢


--------------------------------------------------------------------------------------------------------..................>>>>>>>>>>>>

撞击问题????????

我用hitTest()进行MC的撞击测试,(我要求两个MC刚好相撞就停止运动)发现增加MC速度,或改变MC的运动方向,都会出现两个MC 相交现象。(这种现象能否解决??)
或者不用hitTest(),还有别的方法能达到我的上述要求吗?
请各位高手,帮忙啊!!!!!!!!


 
 

正确答案
这种现象是flash的帧速(每帧mc移动的像素)和两个mc的距离造成的,例如两个mc相距350,而步长设为20,则余10,因此速度过快会重叠。或者由电脑的运算速度造成。
解决办法:
1、mc 周围设置不可见部分,用设置的步长控制其x,y缩放。
2、用as控制两个mc 的x,y坐标。


--------------------------------------------------------------------------------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

输入文本和动态文本的问题???

我在第一帧上放了几个输入文本,我想在后面的某一帧中放几个动态文本,让他们显示输入文本的值!怎么办???
很简单吧,但是我不知道,谢谢了!!!
 

正确答案
只要输入文本和动态文本的“变量”一致就可以了。比如在第一帧拖出两个输入文本,“变量”分别设为X1,X2。然后在后面的某一帧拖出两个动态文本,变量也分别为X1,X2,这样,变量名为X的动态文本就显示变量名为X1的输入文本的内容了(X2也一样)。


-------------------------------------------------------------------------------------------------------------------->>>>>>>>>>>>>>>>>>>>>>>>

赋初始值的问题

你好,我做课件时遇到一个问题,请帮个忙:关于给许多变量赋初始值的问题:如给a1;a2;a3;...;a99这些变量都赋初值为零,当然最简单、最笨的方法是:a1=0;a2=0;a3=0;...a99=0;有没有简单的方法?
先谢了
 
 

正确答案
试试这样行不行!
for(i=1;i<100;i++){
this["a"+i]=0
}


-------------------------------------------------------------------------------------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
getTimer()怎么来控制flash
getTimer()怎么来控制flash啊
 
 

正确答案
例如:
_root.onEnterFrame =function(){
b = Math.floor (getTimer()/1000);
trace(b);
if(b>=10){
_root.onEnterFrame =undefined;
//调用你的函数
}
}
 
 回复人:傻B启明星    信誉:22  总得分:144 发贴时间:2005-04-23 19:02:40  得分:0

我觉的getTimer()是用来控制时间的,比如计数器。在某一帧计下x=getTimer();在其后面的某一帧,
mc.onEnterFrame=function()
{
if(getTimer()-y==n)
{
}
}

 

 

 

 

 

 

-------------------------------------------------------------------------------------------------------------->>>>>>

- - alsha http://blog.xyhc.com/index.php?blogId=159 - 删除恶意网站三步曲(续) 第一步:在桌面上点击“开始”,选“查找”,打开“文件或文件夹”,在“查找”窗口中,输入恶意网站的名称(以下以OK9.com为例:例如“ok9”),在搜索一栏中选中“C”盘,点击“开始查找”,把搜索到的有关ok9内容全部删除。[注意:在搜索时,要选择“显示所有文件”,即在“文件夹选项”——“查看”——“显示所有文件”)

第二步:点“开始”,选“运行”,在“运行”对话框中键入“Regedit”,打开注册表编辑器,在编辑菜单中选“查找”,在查找目标中输入“ok9”,点击“查找下一个”,将搜索到的有关“ok9”内容删除,直到搜索完注册表。

第三步:一般的恶意网站,执行完第二步后就可以解决问题了,但有些网站,在下次启动后,又将注册表改回原样,令你无功而返,这就需要第三步,解决方法如下:点“开始”,选“运行”,在弹出的对话框中键入“msconfig”,打开系统配置实用程序,在“启动”选项卡中,把有regedit-s C:windowswin.dll项的对钩去掉,再启动就不会有问题了。有类似问题的朋友可以一试。


http://blog.xyhc.com/index.php?op=ViewArticle&articleId=601&blogId=159 - 有关于恶意网站的删除 案例:单位的一台公用电脑接入了Internet互联网,没多久,就被一个恶意网页病毒感染了,出现如下症状:打开IE浏览器,会自动进入一个名为“久好网址之家”的网址大全类的网站,打开“Internet选项”,发现主页被设置为“www.**ok9.net”,当使用“搜索”功能时,发现搜索也被修改指向“www.**ok9.net”,真是令人厌烦。 于是我运行注册表编辑器,利用“查找”功能,以“www.**ok9.net”为关键词找出所 有被恶意网页修改的内容,并全部更改回原来的值。谁知重新启动系统后,打开IE浏览器,发现又自动打开了那个恶意网站,而且其他地方也被修改了,看来事情并不是想像的那么简单,这个恶意网站一定还在系统启动时做了什么手脚!

解决方案:

于是在“运行”中输入“msconfig”,打开系统配置实用程序,逐项查找System.ini、Win.ini以及“启动”项中的所有自启动项目,终于在“启动”项中发现了两个极为可疑的键值。虽然一个是默认键值,一个键值名称为“win”,但两者的键值数据都是“regedit -s c:windowswin.dll”。通过查找Regedit的相关命令得知,这个命令的功能是导入一个注册表脚本文件,“-s”参数则是让它后台自动导入,不过这后面导入的是“Win.dll”文件,怎么会是一个动态链接库文件呢?难道这只是一个表面现象,于是用记事本打开这个“Win.dll”文件,发现原来这是一个文本格式的文件,只不过被修改了扩展名而已。

分析了一下这个“Win.dll”文件,原来系统总是自动被恶意修改就是它在起作用。找到了症结,当然解决方法就是删除这个键值,并删除“Win.dll”文件,不过我忽然想到既然恶意网站可以利用这个文件来添加键值数据,为什么我不再利用一下这个文件,以牙还牙,让它还自动还原被恶意修改的键值呢?于是我将该文件修改如下:

REGEDIT4

[空一行]

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun]

@=""

[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun]

"win"=-

[HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMain]

"Start Page"=""

"First Home Page"=""

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerMain]

"Start Page"=""

"First Home Page"=""

rcx

保存修改后的“Win.dll”文件,然后运行一下命令“regedit -s c:windowswin.dll”,重新启动一下系统,你会发现所有的恶意修改一下子就全部被恢复了,你还可以保存着这个文件,如果再遇到这个恶意网页的话,只需要用这个文件恢复一下就可以了,非常方便。


案例分析 http://blog.xyhc.com/index.php?op=ViewArticle&articleId=600&blogId=159 - XP自动登陆: 方法1∶

帐户名有密码的用户∶
根键位置:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows nTCurrentVersionWinlogon修改内容:在右边的窗口中的新建字符串"AutoAdminlogon",并把他们的键值为"1",把“DefaultUserName”的值设置为用户名,并且另外新建一个字符串值“DefaultPassword”,并设其值为用户的密码。这样做的后果是你的密码会以纯文本的形式存放于注册表文件中。换句话说,只要有人能够打开你的注册表文件,那他就会知道你的登录密码。

帐户名没有密码的用户∶
1.安装系统时,只用一个用户名并且没有设置密码。系统可以自动登陆。
2.曾经设置了密码,但删除了密码后不能自动登陆系统的∶
必须满足下面三个条件,才能自动登陆到系统∶没有来宾帐户,不使用欢迎屏,

 

方法2∶

下载一个微软为xp出的power toy“TweakUI for Windows XP”,然后在里面直接设置就可以了。
下载后直接执行tweakui.exe在左边的面板中选择Logon -> Autologon -> 在右边勾选Log on automatically at system startup输入你的用户名和域名(如果没有就不写)点击下面的SetPassword,输入用户名的密码,然后点击OK。虽然同样的功能通过修改注册表也能完成,但是修改注册表的方法密码在注册表中表现的是明文,而Tweak UI在注册表中不会留下明文的密码,所以推荐使用Tweak UI来完成这项工作。

方法3:
只需单击“开始|运行”,并在输入框中键入“control userpasswords2”,选中要默认登陆的帐号,这样就可以在“用户账户”管理窗口中清除“要使用本机,用户必须输入密码”复选项的选中状态,系统会提示输入自动登陆密码。

也可以按下键盘的“Ctrl+Shift+A”,将会得到一个“自动登录”的设置对话框,您可以按自己的需要设置系统在电脑启动时自动登录使用的用户账户和密码

萤火虫论坛

http://blog.xyhc.com/index.php?op=ViewArticle&articleId=363&blogId=159 - 关于清除w32.spybot.worm 关于清除w32.spybot.worm(二)

(1)停止FTP,HTTP等服务,禁止WinXP或WinMe的系统还原,升级病毒库后,并拔掉网线,重启电脑
(2)查找注册表下面各个子项
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion
RunOnce
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion
RunServices
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun

删除有以下项目的项
"Microsoft?Update"?=?"wuamgrd.exe"

删除硬盘中tftp*.*文件?
(3)再重启电脑进入安全模式,使用病毒查杀工具杀病毒
(4)插上网线,使用Windows?Update打上补丁

萤火虫 http://blog.xyhc.com/index.php?op=ViewArticle&articleId=309&blogId=159 - 有关网页打不开的解决 有关网页打不开的解决

最近有许多的网友发现自己的IE都打不开,通过学习,知道了原因所在,即来自应用层的网关服务受到病毒的侵害,导致打不开网页。
一、特征:
1)网页打不开,但QQ能上
2)在系统启动后,在后台会产生一个alg.exe的进程?
二、解决方法:
1、win98
方法一:
开始——运行——输入下面一条条程序,点确定,最后重启!?
regsvr32?shdocvw.dll?
regsvr32?oleaut32.dll?
regsvr32?actxprxy.dll?
regsvr32?mshtml.dll?
regsvr32?msjava.dll?
regsvr32?browseui.dll?
regsvr32?urlmon.dll?

如果不行的话,上网下一个修复软件mcrepair.exe运行一下就可以了

方法二:
要排除上述第1种情况引起的故障,你需要首先检查拨号网络中的主控DNS和辅助DNS是否有错误,注意这里是检查“拨号网络”的DNS而非“控制面板”中的“网络”的DNS,下面以Windows98为例说明,其它操作系统也可以参照,无非是改正输错了的DNS服务器地址和重装一下TCP/IP协议而已,步骤如下:?

1.在桌面上双击“我的电脑”图标,将会打开一个新窗口,在窗口中双击“拨号网络”图标。?

2.在拨号网络窗口找到你拨号上网用的那个图标,例如“我的连接”,用鼠标右键单击这个图标?,在弹出的菜单上用鼠标左键选择最下面一行“属性”?

3.在弹出的窗口上边单击“服务器类型”,注意图中windows98默认是选中了“登陆网络”、“NETBEUI”、“IPX/SPX”这几个选项的,需要把这三个选项去除。?

4.单击上图右下角的“TCP/IP设置”按钮?,会弹出窗口,检查第一行“已分配IP地址的服务器”左面是否有黑点,如果没有则必须用鼠标单击?,在看看此窗口中间有两行中文分别是“已分配名称服务器地址的服务器”和“指定名称服务器的地址”,这两行中系统必须让你选择其中一行,如果你选择了“指定名称服务器的地址”这一行,你就需要特别注意了,看看里面的“主控DNS”和“辅助DNS"有没有设置错误,(广州地区的163用户的主控DNS是:202.96.128.68)如果这里设置错误,那么你就无法浏览到网页,所以你务必把错误的值改过来。DNS是域名解释服务器的意思,它的作用是将你在浏览器中输入的英文网址转换成计算机可以识别的IP地址,你必须要向你的Internet服务提供商(如果你是163用户,那么你可以向当地电信部门咨询)问清楚他们的DNS服务器的地址,将这个正确的地址在这里填上。如果你一时无法得知“主控DNS”和“辅助DNS"应该填什么,那么请你选择“已分配名称服务器地址的服务器”?,现在,再看看此窗口最下面两行中文“使用IP头指针压缩”和“使用远程网上的默认网关”是否都打上勾了?这两行必须打勾的,设置完毕后单击两次“确定”。?

现在请试试拨号上网,然后浏览网页,可以正常浏览了吗??

下面再说说由于TCP/IP协议出问题引起的故障,如果你检查过以上设置后发现设置没有错误,但仍然无法浏览网页,那么你就要检查“TCP/IP”协议是否出错了,办法如下:?

在桌面上双击“我的电脑”图标,?再双击“控制面板”,在控制面板中找到“网络”图标,双击它?将弹出一个新的窗口,在弹出的窗口中看看“已安装了下列网络组件”中是否安装了以下几项:?

×拨号网络适配器?
×TCP/IP?

这里要特别注意两点:?第一,如果这里重复安装了两次拨号网络适配器或TCP/IP,就造成无法浏览网页,怎么看出是重复安装了呢?假如重复安装了拨号网络适配器,你会看到有一行写着“拨号网络适配器#2”或“TCP/IP->拨号网络适配器#2”,这里多了一个“#2",代表你安装了两次,如果发现有这样#2的一行,请务必删除此行。?

第二,如果这里没有重复安装,但又肯定拨号网络中的配置无误,那么极有可能就是TCP/IP协议出错造成无法浏览网页,解决办法是删除此协议重新安装TCP/IP(注意做此步前请先确定你有windows9x的安装光盘,因为重装时系统需要从此光盘中读取数据),具体方法是:用鼠标左键单击“拨号网络适配器”,再留意此窗口有三个按钮,分别是“添加”、“删除”和“属性”,单击“删除”,这时你会发现“拨号网络适配器”已经被删除,再检查“TCP/IP”,通常如果你没有装其它网卡,删除了拨号网络适配器后TCP/IP也会跟着删除,如果你安装了其它网卡,那么请你用鼠标左键单击含有TCP/IP的行,然后将他们一一删除。单击“确定”。系统会询问你是否重新启动电脑,单击“是”。重启电脑后,再进入“控制面板”,双击“网络”,回到刚才的窗口,然后单击“添加”按钮,一个新的窗口将出现,在此窗口选择“适配器”,再单击“添加”,会出现最后一个新的窗口。?
此窗口的左边方框是“厂商”,这里选择“Microsoft”,在右边方框中选择“拨号适配器”,单击确定,你会发现现在回到了控制面板中的“网络属性”窗口,而且“已安装了下列网络组件”中已经重新增加了“拨号网络适配器”和“TCP/IP”协议。单击“确定”系统可能会要求你放入Windows9X的安装光盘,读取数据后会问你是否重新启动电脑,单击“是”,重启电脑后拨号上网,通常到此不能浏览网页的故障都会排除。?

提示:以上一段话中有一点请务必注意,有部分朋友反映重装“TCP/IP”后仍然不能浏览网页,经我们测试发现,原因是有些朋友在删除了“TCP/IP"后没有重启电脑就立即在窗口中重新添加“TCP/IP”,最后重启电脑,这样做是徒劳无功的。请记住务必在删除“TCP/IP”后重启电脑,然后再添加“TCP/IP”,添加后再一次重启电脑,这样总共重启了两次电脑而非只重启一次,只有如此才能解决故障?

2、WinXP
进入控制面板——管理工具——服务——Application?Layer?Gateway?Service
——右击——属性
把服务状态设置为“已禁用”——按应用——选择“停止服务”——按确定——重启

------------------------------------------------------------------------------------------------------>>>>>
flash命令


章节:1

flash的一些命令
<P>Flash5的Action Script详解
+ Basic Actions 能加入到程序中的基本Action
 - Go to 跳转到指定的帧
 - Play 播放
 - Stop 停止
 - Toggle High Quality 在高画质和低画质间切换
 - Stop All Sounds 停止所有声音的播放
 - Get URL 使浏览器浏览指定页面
 - FSCommand 发送FSCommand命令
 - Load Movie 引入影片
 - Unload Movie 卸载影片
 - Tell Target 指定Action命令生效的目标
 - If Frame Is Loaded ..帧是否被载入
 - On Mouse Event 鼠标事件
+ Actions 所有的Action
 - break 跳出循环
 - call 调用指定帧
 - comment 注释
 - continue 继续循环
 - delete 删除一个物件(Object)中的变量
 - do while do while循环
 - duplicateMovieClip 复制MC
 - else 否则(与if联用)
 - else if 否则如果(与if联用)
 - evaluate 调用自己写的函数(Function)
 - for for循环
 - for .. in 列举物件(Object)中的子体(Child)
 - FSCommand 发送FSCommand命令
 - function 声明自定义函数
 - getURL 使浏览器浏览指定页面
 - goto 跳转到指定的帧
 - if 如果
 - ifFrameLoaded ..帧是否被载入
 - include 读入外部的ActionScript程序文件(.as)
 - loadMovie 引入MC
 - loadVariables 引入外部文件中的变量值
 - on 鼠标事件的触发条件
 - onClipEvent MC的事件触发程序
 - play 播放
 - print 输出到打印机
 - removeMovieClip 删除MC
 - return 在函数(function)中返回一个值
 - set variable 设定变量值
 - setProperty 设定属性
 - startDrag 开始拖动
 - stop 停止
 - stopAllSounds 停止所有声音的播放
 - stopDrag 停止拖动
 - swapDepths 交换两个MC的深度
 - tellTarget 指定Action命令生效的目标
 - toggleHighQuality 在高画质和低画质间切换
 - trace 跟踪调试
 - unloadMovie 卸载MC
 - var 声明局部变量
 - while 当..成立时..
 - with 对..物件(Object)做..
+ Operators
 - ! 逻辑非**作
 - != 不等于
 - "" 字符串
 - % 取余数
 - && 逻辑与**作
 - () 括号
 - * 乘号
 - + 加号
 - ++ 变量自加一
 - - 减号
 - -- 变量自减一
 - / 除号
 - < 小于
 - <= 小于等于
 - <> 不等于
 - == 相等
 - > 大于
 - >= 大于等于
 - and 逻辑与
 - not 逻辑非
 - or 逻辑或
 - typeof 返回变量类型
 - void 实体,无返回
 - | | 逻辑或**作
 + Bitwise Operators 位**作符
  - & 位与**作
  - << 位左移
  - >> 位右移
  - >>> 位右移(无符号)
  - ^ 位异或**作
  - | 位或**作
  - ~ 补位**作
 + Compound Assign Operators 复合**作符
  - %= A%=B 等效于 A=A%B
  - &= A&=B 等效于 A=A&B
  - *= A*=B 等效于 A=A*B
  - += A+=B 等效于 A=A+B
  - -= A-=B 等效于 A=A-B
  - /= A/=B 等效于 A=A/B
  - <<= A<<=B 等效于 A=A<  - >>= A>>=B 等效于 A=A>>B
  - >>>= A>>>=B 等效于 A=A>>>B
  - ^= A^=B 等效于 A=A^B
  - |= A|=B 等效于 A=A|B
 + String Operators 字符串**作符
  - add 连接两个字符串
  - eq A eq B 字符串A值与字符串值B相等
  - ge A ge B 字符串A值大于等于字符串B值
  - gt A gt B 字符串A值大于字符串B值
  - le A le B 字符串A值小于等于字符串B值
  - lt A lt B 字符串A值小于字符串B值
  - ne A ne B 字符串A值不等于字符串B值
+ Functions 函数
 - Boolean 取表达式的布尔值(True 或 False)
 - escape 除去URL串中的非法字符
 - eval 返回由表达式命名的变量得值
 - false 布尔非值(0)
 - getProperty 获取属性
 - getTimer 获取从电影开始播放到现在的总播放时间(毫秒数)
 - getVersion 获取浏览器的FLASHPlayer的版本号
 - globalToLocal 场景(Scene)中的坐标转换成MC中的坐标
 - hitTest 测试一个点或者MC是否同另一个交叉
 - int 把数值强制转换成整数
 - isFinite 测试数值是否为有限数
 - isNaN 测试是否为非数值
 - keycode 返回键盘按下键的键盘值
 - localToGlobal MC中的坐标转换成场景(Scene)中的坐标
 - maxscroll 文本框的最大长度
 - newline 换行符
 - Number 将参数转换成数值
 - parseFloat 将字符串转换成浮点数
 - parseInt 将字符串转换成小数
 - random 产生0到指定数间的随机数
 - scroll 文本框中的当前行
 - String 将参数转换成字符串
 - targetPath 返回指定实体MC的路径字符串
 - true 布尔是值(1)
 - unescape 保留字符串中的%XX格式的十六进制字符
 + String Functions 字符串函数
  - chr 将ASCII码转换成相应字符
  - length 返回字符串的长度
  - mbchr 将ASCII/S-JIS编码转换成相应的多字节字符
  - mblength 返回多字节字符串的长度
  - mbord 将多字节字符转换成相应的ASCII/S-JIS编码
  - mbsubstring 截取多字节字符串中的字串
  - ord 将字符转换成ASCII码
  - substring 截取字符串中的子串
+ Properties 属性
 - _alpha Alpha值(透明度值)
 - _currentframe 在MC中的当前帧数
 - _droptarget 正在拖动的MC是否播完
 - _focusrect 焦点矩形框的显示与否(True显示/Flase不显示)
 - _framesloaded 载入的影帧数
 - _height MC的高度
 - _highquality 画质的高低(True高画质/False低画质)
 - _name MC的实体名
 - _quality 当前画质(字符串值) LOW,MEDIUM,HIGH,BEST
 - _rotation MC旋转的角度(单位:度)
 - _soundbuftime 声音的缓冲区大小(默认值5,单位:秒)
 - _target MC的路径
 - _totalframes 总帧数
 - _url 电影被调用的URL地址
 - _visible 是否可视(True可视/False不可视)
 - _width MC的宽度
 - _x MC的x坐标
 - _xmouse 鼠标的x坐标
 - _xscale MC的X轴向缩放度
 - _y MC的y坐标
 - _ymouse 鼠标的y坐标
 - _yscale MC的y轴向缩放度


----------------------------------------------------------------------..........................

章节:2

+ Objects 物件
 + Array 数组
  - concat 合并多个数组
  - join 合并数组元素位字符串
  - length 返回数组长度
  - new Array 新建数组物件
  - pop 出栈 (FILO 先入后出)
  - push 入栈 (入队列)
  - reverse 反相(颠倒数组,及第一个元素和最后一个元素互换……)
  - shift 出队列 (FIFO 先入先出)
  - slice 截取数组中的子串生成新的数组
  - sort 数组元素的排序
  - splice 从数组中指定元素起删除指定个数的元素或者删除指定元素
  - unshift 从数组头部插入一个元素
 + Boolean 布尔数
  - new Boolean 新建布尔型物件
  - toString 将布尔型物件的值转换成字符串值
  - valueOf 获取布尔型物件的值(返回值为布尔型)
 + Color 颜色
  - getRGB 获取颜色值的RGB分量(返回值0xRRGGBB十六进制)
  - getTransform 获取颜色值的转换量(返回值 cxform 型) [不太清楚]
  - new Color 新建一颜色物件
  - setRGB 设置颜色值的RGB分量(参数为0xRRGGBB十六进制)
  - setTransform 设置颜色值的转换量(参数为 cxform 型) [不太清楚]
 + Date 时间和日期
  - getDate 获取当前日期(本月的几号)
  - getDay 获取今天是星期几(0-Sunday,1-Monday...)
  - getFullYear 获取当前年份(四位数字)
  - getHours 获取当前小时数(24小时制,0-23)
  - getMilliseconds 获取当前毫秒数
  - getMinutes 获取当前分钟数
  - getMonth 获取当前月份(注意从0开始:0-Jan,1-Feb...)
  - getSeconds 获取当前秒数
  - getTime 获取UTC格式的从1970.1.1 0:00以来的秒数
  - getTimezoneOffset 获取当前时间和UTC格式的偏移值(以分钟为单位)
  - getUTCDate 获取UTC格式的当前日期(本月的几号)
  - getUTCDay 获取UTC格式的今天是星期几(0-Sunday,1-Monday...)
  - getUTCFullYear 获取UTC格式的当前年份(四位数字)
  - getUTCHours 获取UTC格式的当前小时数(24小时制,0-23)
  - getUTCMilliseconds 获取UTC格式的当前毫秒数
  - getUTCMinutes 获取UTC格式的当前分钟数
  - getUTCMonth 获取UTC格式的当前月份(注意从0开始:0-Jan,1-Feb...)
  - getUTCSeconds 获取UTC格式的当前秒数
  - getYear 获取当前缩写年份(当前年份减去1900)
  - new Date 新建日期时间物件
  - setDate 设置当前日期(本月的几号)
  - setFullYear 设置当前年份(四位数字)
  - setHours 设置当前小时数(24小时制,0-23)
  - setMilliseconds 设置当前毫秒数
  - setMinutes 设置当前分钟数
  - setMonth 设置当前月份(注意从0开始:0-Jan,1-Feb...)
  - setSeconds 设置当前秒数
  - setTime 设置UTC格式的从1970.1.1 0:00以来的秒数
  - setUTCDate 设置UTC格式的当前日期(本月的几号)
  - setUTCFullYear 设置UTC格式的当前年份(四位数字)
  - setUTCHours 设置UTC格式的当前小时数(24小时制,0-23)
  - setUTCMilliseconds 设置UTC格式的当前毫秒数
  - setUTCMinutes 设置UTC格式的当前分钟数
  - setUTCMonth 设置UTC格式的当前月份(注意从0开始:0-Jan,1-Feb...)
  - setUTCSeconds 设置UTC格式的当前秒数
  - setYear 设置当前缩写年份(当前年份减去1900)
  - toString 将日期时间值转换成"日期/时间"形式的字符串值
  - UTC 返回指定的UTC格式日期时间的固定时间值
 + Key 键盘
  - BACKSPACE Backspace(<-)键
  - CAPSLOCK CapsLock键
  - CONTROL Ctrl键
  - DELETEKEY Delete(Del)键
  - DOWN 方向下键
  - END End键
  - ENTER Enter(回车)键
  - ESCAPE Esc键
  - getAscii 获取最后一个按下或松开的键的对应字符的Ascii码
  - getCode 获取最后一个被按下的键的键盘扫描码
  - HOME Home键
  - INSERT Insert(Ins)键
  - isDown 当指定键被按下时返回True值
  - isToggled 当指定键被锁定时返回True值
  - LEFT 方向左键
  - PGDN PageDown(PGDN)键
  - PGUP PageUp(PGUP)键
  - RIGHT 方向右键
  - SHIFT Shift键
  - SPACE 空格键
  - TAB Tab键
  - UP 方向上键
 + Math 数学函数
  - abs abs(n) 取n的绝对值
  - acos acos(n) n的反余弦(返回值单位:弧度)
  - asin asin(n) n的反正弦(返回值单位:弧度)
  - atan atan(n) n的反正切(返回值单位:弧度)
  - atan2 atan2(x,y) 计算x/y的反正切
  - ceil ceil(n) 取靠近n的上限的整数(向上取整)
  - cos cos(n) 取n的余弦(n的单位:弧度)
  - E Euler(欧拉)指数(约为2.718)
  - exp 指数
  - floor floor(n) 取靠近n的下限的整数(向下取整)
  - LN10 ln10(约等于2.302)
  - LN2 ln2(约等于0.693)
  - log 取自然对数(e为底)
  - LOG10E 10为底取E的对数(约等于0.434)
  - LOG2E 2为底取E的对数(约等于1.443)
  - max 返回两参数中的最大值
  - min 返回两参数中的最小值
  - PI 圆周率(约等于3.14159)
  - pow pow(x,y) x的y次方
  - random 产生0-1间的随机数
  - round 四舍五入取整
  - sin sin(n) 取n的正弦(n的单位:弧度)
  - sqrt 开根号
  - SQRT1_2 0.5开根号(约等于0.707)
  - SQRT2 2开根号(约等于1.414)
  - tan tan(n) 取n的正切(n的单位:弧度)
 + MovieClip 电影剪辑
  - attachMovie 绑定一个电影,产生一个库中MC的实体
  - dupicateMovieClip 复制当前MC为新的MC
  - getURL 使浏览器浏览指定页面
  - gotoAndPlay 跳转到指定帧并播放
  - gotoAndStop 跳转到指定帧并停止播放
  - loadMovie 引入一个外部电影到指定层
  - loadVariables 引入外部文件中的变量值
  - nextFrame 下一帧
  - play 播放
  - prevFrame 前一帧
  - removeMovieClip 删除用duplicateMovieClip创建的MC
  - startDrag 开始拖动MC
  - stop 停止MC的播放
  - stopDrag 停止拖动MC
  - unloadMovie 卸载由loadMovie引入的Movie
 + Mouse 鼠标
  - hide 隐藏鼠标指针
  - show 显示鼠标指针
 + Number 数值
  - MAX_VALUE FLASH5 所允许的最大数值1.79769313486231 e 308
  - MIN_VALUE FLASH5 所允许的最小数值5 e -324
  - NaN 是否为非数值(Not a Number)
  - NEGATIVE_INFINITY 是否为负数
  - new Number 新建数值物件
  - POSITIVE_INFINITY 是否为正数
  - toString 将数值转换成字符串
 + Object 物件
  - new Object 新建物件
  - toString 转换物件为字符串
  - valueOf 返回物件的值
 + Selection 选择区
  - getBeginIndex 获取可编辑文本区的起始位置,-1表示无可编辑文本区
  - getCaretIndex 获取当前的编辑位置,-1表示没有可编辑文本区
  - getEndIndex 获取可编辑文本区的结束位置,-1表示无可编辑文本区
  - getFocus 获取当前的激活文本区的文本变量名
  - setFocus 设置当前的激活文本区
  - setSelection 设置可编辑文本的起始位置和终止位置
 + Sound 声音
  - attachSound 绑定库中的一个声音
  - getPan 获取声音的混音值 [不太清楚]
  - getTransform 获取当前声音的变换量(返回值类型:sxform) [不太清楚]
  - getVolume 获取当前声音的音量(百分比)
  - new Sound 新建声音物件
  - setPan 设置声音的混音值 [不太清楚]
  - setTransform 设置当前声音的变换量(参数类型:sxform) [不太清楚]
  - setVloume 设置当前声音的音量(百分比)
  - start 开始播放当前声音
  - stop 停止播放当前声音
 + String 字符串
  - charAt 在指定的索引表中返回一个字符
  - charCodeAt 在指定的索引表中返回一个字符的代码
  - concat 联结合并多个字符串
  - fromCharCode 从字符代码组构造出一个新的字符串
  - indexOf 在字符串中寻找子串,返回子串起始位置或-1(-1表示未找到)
  - lastIndexOf 在字符串中寻找子串,返回子串终止位置或-1(-1表示未找到)
  - length 返回字符串的长度
  - new String 新建字符串物件
  - slice 返回字符串中指定截取的子串
  - split 根据限定符将字符串转换成一个数组
  - substr substr( start, length ) 返回从start开始,共length长的子串
  - substring substring( indexA, indexB ) 返回indexA..indexB之间的子串
  - toLowerCase 将字符串中的大写字符全部转换成小写
  - toUpperCase 将字符串中的小写字符全部转换成大写
 + XML 可扩充性标记语言
  - appendChild 添加一个子结点到指定的XML元素
  - attributes XML元素的属性数组
  - childNodes 一个XML元素的子结点数组
  - cloneNode 克隆(复制)当前结点
  - createElement 新建一个新的XML元素
  - createTextNode 新建一个新的XML文本结点
  - firstChild 返回当前XML结点的第一个子结点
  - hasChildNodes 当前XML结点是否有子结点(返回true有子结点/flash则无)
  - insertBefore 在一个指定的XML元素的子结点前插入一个新的子结点
  - lastChild 返回当前XML结点的最后一个子结点
  - load 从指定的URL把XML元素引入FLASH中
  - loaded 当XML元素引入或是发送同时引入FLASH中后,返回true值
  - new XML 新建一个XML物件
  - nextSibling 当前XML结点的下一个结点
  - nodeName 返回当前XML结点的名字
  - nodeType 返回当前XML结点的类型(1-元素,3-文本)
  - nodeValue 返回当前XML结点的值(text型返回文本)
  - onLoad 当引入或发送同时引入时触发事件
  - parentNode 返回当前XML结点的父结点
  - parseXML 将XML字符串转换成XML物件
  - previousSibling 当前XML结点的前一个结点
  - removeNode 从XML文本中删除结点
  - send 从FLASH中把一个XML元素发送到指定的URL地址
  - sendAndLoad 从FLASH中把一个XML元素发送到指定的URL地址同时引入XML结果
  - toString 把XML物件转换为XML字符串表达
 + XMLSocket XML套接口
  - close 关闭一个XML套接口
  - connect 连接一个XML套接口,指定URL,并定义其端口号
  - new XMLSocket 建立一个新的XML套接口
  - onClose 关闭XML套接口时触发事件
  - onConnect 连接XML套接口时触发事件
  - onXML 从服务器上获取XML时触发事件
  - send 发送XML给服务器

---------------------------------------------------------------------------------------------->>>>>>>>>>>>>>>>>>>>>>

关于声音的常用命令介绍


先做个简单的了解,FLASH中经常用到的声音的控制命令以及声音的属性有哪些:
1.new Sound()//创建一个新的声音对象;
2.mysound.attachSound()//加载库里的声音
3.mysound.start()//播放声音;
4.mysound.getVolume()//读取声音的音量
5.mysound.setVolume()//设置音量
6.mysound.getPan()//读取声音的平衡值
7.mysound.setPan()//设置声音的平衡值
8.mysound.position//声音播放的当前位置
9.mysound.duration//声音的总长度;

2.控制音量的滑块上的代码:


on(press){
startDrag(a,true,30,147,130,147);//按下按钮不放,则开始拖动滑块a,拖动范围 左上右下依次为:30,147,130,147。这些数值的获得方法,你可以在源文件相应元件的属性面板里看到;
}
on(release){
stopDrag();//松下按钮则停止拖动


3.控制平衡的滑块上的代码:

on(press){
startDrag(b,true,30,179,130,179);//按下按钮不放,则开始拖动滑块a,拖动范围 左上右下依次为:30,179,130,179。
}
on(release){
stopDrag();//松下按钮则停止拖动
}

 

4.暂停按钮的代码:


on(release){
k=k+1;//k是用来统计当前点击暂停按钮次数的变量;
if(k%2==1){//奇偶判断;
mysound.stop();//若为奇数则停止音乐;
_root.b=int(mysound.position/1000);//记录下停止时播放的位置,赋值给变量b;
_root.bb="停在第"+_root.b+"秒";//在bb文本框内显示当前停止的位置;
}else{
mysound.start(_root.b);//从上一次停止的位置开始继续播放;
_root.bb="正在播放";
}
}

 

5.停止按钮上的代码:


on(release){
mysound.stop();//停止音乐
_root.bb="已停止";//显示音乐停止;
_root.b=0;//点击次数清零;以便下次统计;
_root.k=1//这点的解释参看注意点1;
}

 

6.播放按钮的代码:


on(release){
mysound.stop()//为了避免当前正在播放音乐的音乐和再次开始的音乐重复,所以先停止当前音乐;
mysound.start();//开始播放新的音乐
_root.bb="正在播放";
k=0//关于这里为什么重新给k赋值,请参看最后的注意点2;
}


http://www2.flash8.net/teach/3303.htm


------------------------------------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

FLASH弹出窗口的实现
on (release) {
getURL("javascript :window.open(’http://www.flash8.net',’’,’toolbars=no,location=no,scrollbars=no,status=no,resizable=no,width=500,height=500’)");
} //toolbars是否显示工具栏,location是否显示地址栏,scrollbars是否显示滚动条,
status是否显示状态栏,resizable是否可以改变大小,后面的不用说了吧。


---------------------------------------------------------------------------------
box_btn.onPress=function(){

trace("ok");

};

按钮实例名称.事件处理方法=function(){

//处理程序

};

例如:

n=1

box_btn.onRelease=function(){

n=n+1

trace("n="+n);

}

当按钮被点一下的时候,Output窗口会输出:"n=2"

onClipEvent(load){

stop();

}

以上是影片剪辑的事件处理函数。"()"的内部是事件。

在一个FLASH里在第一个场景里调用第二个场景,

要在第一个场景里需要调用的地方加个按钮,然后在按钮上写下如下代码:

on (release) {

tellTarget ("_root") {

gotoAndPlay ("mm2", 1);

}

}

其中,"mm2"是第二个场景的MC的名称。

on (release) {

loadmovie("fz3.swf",1);

setProperty("fz3.swf",_x,100);

setProperty("fz3.swf",_y,100);

_root.createEmptyMovieClip("Card Game");

mc.loadMovie("fz3.swf");

mc._x=0;

mc._y=0;

}

fz3.swf是需要调入的SWF文件,_x,_y是坐标轴

Card Game是SWF中MC的名字

on(release)结构只能用于按钮,

其他相关的几种用法如on(press)、on(rollOver)、on(rollout)、on(dragOver)、on(dragOut)等。

2.else

对if语句可以进行扩展,使用else执行条件不成立(比较表达式为false)时的代码,如下所示:

if (x == 9) {

gotoAndPlay(15);

} else {

gotoAndPlay(16);

}

你也可以使用else if语句将if语句更推进一步,如下所示:

if (x == 9) {

gotoAndPlay(15);

} else if (x == 10) {

gotoAndPlay(16);

} else if (x == 11) {

gotoAndPlay(20);

} else {

gotoAndPlay(25);

}

你可以让if语句想要多长就有多长,你也可以使用else if语句对别的变量进行比较,如下所示:

if (x == 9) {

gotoAndPlay(15);

} else if (y<20) {

gotoAndPlay(16);

} else {

gotoAndPlay(25);

}

3.复合比较

你可以在一个if语句中对几个比较表达式的值进行判断,

比如说你希望在x为9并且y为20时跳转到第10帧,可以使用如下所示的脚本:

if ((x == 9) && (y == 20)) {

gotoAndPlay(10);

}

逻辑与运算符&&将两个比较表达式联接在一起成为一个复合表达式,

当两个表达式的值都为true时复合表达式的值才为true。

每个比较表达式都需要添加独立的括号以便Flash能正确识别。

在Flash的早期版本中使用and执行逻辑与运算,现在已推荐不使用。

你也可以使用逻辑或运算符||将两个比较表达式联接在一起成为一个复合表达式,

只要有一个表达式的值为true,复合表达式的值就为true。如下所示:

if ((x == 7) || (y == 15)) {

gotoAndPlay(20);

}

在该脚本中,只要x为7或者y为15,或者两者都成立,结果都是跳转到第20帧。

只有当两者都不成立时,才不会执行gotoAndPlay命令。

3.4.6 函数

到现在为止,我们都是将脚本放在影片的第1帧中。

如果程序相当复杂,再放在同一帧中就使脚本显得太庞大了。

函数使你可以组织需重用的代码,并放在时间轴中,例如:

function myFunction(myNum) {

var newNum = myNum+5;

return newNum;

}

函数以关键字function开头,function后面是函数名。

与变量名相似,你可以指定自己的函数名,最好将函数名取得有意义一些。

函数名后面的括号容纳该函数的参数,所谓参数也是一个变量,它的值在调用该函数时予以指定。

一个函数可以有若干参数,也可以没有参数。无论有没有参数,函数名后都应紧跟一对括号。

大括号中的部分是函数体,在函数体中创建了一个局部变量newNum,

将myNum加5的结果设置为newNum的值。

如果你将10作为参数传递给该函数,newNum的值就是15。

return命令仅用于函数中,使用return结束一个函数并返回函数值。

此处,newNum是用return命令返回的函数值。

要使用函数,就需要调用它,如下所示:

var a = myFunction(7);

该语句创建一个新的局部变量a,将7作为参数调用函数myFunction,并将函数返回的结果作为变量a的值。

被调用的函数开始运行,创建一个局部变量myNum,将7作为myNum的值,

然后执行函数体内的代码,使用return命令将newNum的值12返回给函数的调用者。这时,a的值变为12。

函数最大的作用体现在它可以重复使用。如下所示的3行代码产生3个不同的结果:

trace(myFunction(3));

trace(myFunction(6));

trace(myFunction(8));

运行以上代码,你将得到结果8、11和13。

使用函数还有一个好处就是可以只改变函数中的一处,从而影响所有调用该函数的命令。

例如,将函数myFunction中的var newNum = myNum+5改成var newNum = myNum+7,

上面3个调用该函数的命令的结果将变成10、13和15点语法的另一个用途是指定影片剪辑的属性。

如下面的语句将影片剪辑myMC的_alpha(透明度)属性设置为50%:

myMC._alpha = 50;

你还可以在影片剪辑中使用点语法定位根(root)中的一个全局变量。

如果你在主时间轴中创建了一个全局变量globelVar,

而要在影片剪辑中使用这个全局变量,可以使用如下的语句:

trace(_root.globleVar);

stop:使影片停止在当前时间轴的当前帧中。

play:使影片从当前帧开始继续播放。

gotoAndStop:跳转到用帧标签或帧编号指定的某一特定帧并停止。

gotoAndPlay:跳转到用帧标签或帧编号指定的某一特定帧并继续播放。

nextFrame:使影片转到下一帧并停止。

prevFrame:使影片回到上一帧并停止。

stop命令常常用在帧动作中,以使影片停止并等待用户控制。

其他命令常常用在按钮的事件处理函数中。

如果gotoAndPlay命令中只有一个参数,Flash将认为它代表某个帧;

如果有两个参数,第1个参数将作为场景名,第2个参数代表该场景中的帧。

要定位包含某一对象的上一级对象,可以使用关键字_parent。

如果一个影片剪辑是包含在主时间轴中,在影片剪辑中使用_parent和_root的效果是一样的。

如果影片剪辑与主时间轴相差两个层级,即当影片剪辑包含在另一个位于主时间轴中的影片剪辑中,

这时在该影片剪辑中使用_parent指代的是它上一级的影片剪辑,

而_root是指它上两级的主时间轴。在主时间轴中不能使用_parent,因为主时间轴没有上一级。


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实例到别一个文件中时,要先把目标文件中的符

号库中原有的符号,装进资夹里,很多网友这个问题上上过当吧?


需要记住一个动作的作用时,可在动作面板中使用comment(注释)语句给帧或按钮动作添加注释。如果你在协作环境中工作或给别人提供范例,添加注释有助于别人对你编写的脚本的正确理解。

在动作面板中选择comment动作时,字符"//"被插入到脚本中。如果在你创建脚本时加上注释,即使是较复杂的脚本也易于理解,例如:

on(release){

//建立新的日期对象

myDate = new Date();

currentMonth=myDate.getMonth();

//把用数字表示的月份转换为用文字表示的月份

monthName = calcMoth(currentMonth);

year = myDate.getFullYear();

currentDate = myDate.getDat();

}

常量

常量有其值永不改变的属性。常数用大写字母列于动作工具箱中。例如,常数BACKSPACE、ENTER、QUOTE、RETURN、SPACE和TAB是Key对象的属性,指键盘上的键。要测试用户是否在按Enter键,可使用下面的语句:

if(keycode()= =key.ENTER){

alert = "你准备好了吗?"

controlMC.gotoAndStop(5);

}


##############################################################################
在某祯暂停后继续播放
在帧上加
stop();
var fanshaoye = setInterval(go, 5000);
function go() {
play();
clearInterval(fanshaoye);
}


########################################################################
FLASH中调用外部文本并在文字上加链接
story = new XML();
story.ignoreWhite = true;
story.load("zishu.html");
story.onLoad = function () {
alink.htmlText = story;
}

zishu.html 你可以写成这样!
<html>
<a href="http://www.zishu.cn" target="_blank">秀才的网站</a><br>
<a href="http://www.zishu.cn" target="_blank">秀才的网站</a><br>
<a href="http://www.zishu.cn" target="_blank">秀才的网站</a><br>
<a href="http://www.zishu.cn" target="_blank">秀才的网站</a><br>
<a href="http://www.zishu.cn" target="_blank">秀才的网站</a><br>
</html>

alink是动态文本框;
#########################################################################3

如何让flash占满整个IE

<html>
<body leftmargin=0 topmargin=0 scroll=no>
<embed width=100% height=100% src="index.swf" scale="exactfit">
</body>
</html>

flash的控制参数
SCALE 对应 showall | noborder | exactfit
ShowAll 显示全部
NoBorder 无边框模式
ExactFit 拉伸到整个画面
空 原始大小

 

*********************************************
锁定主场景:
this._lockroot = true;

--------------------------------------------------------------------

设置首页代码:

on (release) {
geturl("javascript :document.body.style.behavior=/"url(#default#homepage)/";document.body.sethomepage(/"http://www.flash8.net
")", "_self");
}

加为收藏代码:


on (release) {
geturl("javascript :window.external.addfavorite(/"http://www.flash8.net/")", "_self");
}


判断输入是否为数字的函数: 


on(release){ 
if(Number(pass)==NaN){//判断输入是否为数字 
pass=""; 



检查E-MAIL的函数:

function checkemail(email) {
var str = new String(email);
var arr_email = str.split("@");
if ((arr_email.length != 2) || (arr_email[1].indexOf(".")<1)) {
return (false);
} else {
return (true);
}
}


延时函数:

function showTime(second, option) {
//延时函数 
this.createEmptyMovieClip("t_mc", 9999);
t = getTimer();
f = false;
if ((getTimer()-t)>(second*1000)) {
option();
}
}
function go() {
//加入效果 
jpg2._y = jpg2._y+77;
jpg2._alpha = jpg2._alpha-15;
}
fscommand("fullscreen", "true");
createEmptyMovieClip("jpg1", 1);
createEmptyMovieClip("jpg2", 2);
jpg1.loadMovie("1.jpg");
jpg2.loadMovie("2.jpg");
i = 0;
while (i<=100) {
showTime(0.1, go);
i = i+20;
}


FLASH中的保留小数的函 

int(你的数*10)/10; 
这样是保留一位 
乘上100就是两位。以此类推 


FLASH脚本实现关机 

flash5: 
fscommand ("exec","rundll"+chr(9)+"user.exe,exitwindows"); 


鼠标双击问题!

lsn_DbClick = new Object();
lsn_key = new Object();
lsn_DbClick.onMouseDown = function() {
clickTime = getTimer();
if (clickTime-lastClickTime<=300) {
trace("双击了鼠标");
}
lastClickTime = clickTime;
};
Mouse.addListener(lsn_DbClick);
time = getTimer()-down_time;
if (time<300) {
//双击后的代码部分 
}
down_time = getTimer();
怎样在从另一个swf中获取变量 

loadMovieNum("vars.swf", 1["POST"]);
_root.onEnterFrame = function() {
trace(_level1.myvab);
};
//当加载完毕后,输出就有值了... 


鼠标右键及滚轮的代码 


if Key.isDown(2){},(左键的代码是1) 

左键:Key.isToggled(1) 
右键:Key.isToggled(2) 
滚轮:Key.isToggled(4) 
滚轮1:Key.isToggled(4) PC机上用 
滚轮2:Key.isToggled(3) MAC机上用 
未知:Key.isToggled(3) 
this.onEnterFrame = function() { 
if (Key.isDown(2)){ 
trace("asdfjsdjkf"); 




实现TAB功能

获得焦点 
使用Selection.setfocus()函数 
举个例子: 
例如你在主影片中有N个文本框,变量分别为text1,text2.....你想使影片一播放就把焦点落到第一个
文本框你就在第一FRAME 加AS如下: 
Selection.setfocus("_root.text1"); 

我们可以举一反三 


实现TAB功能 二 

把这个N个文本框做组成一个数组 
numarray=new array("_root.text1","_root.text2",....................."_root.textn"); 
首先获得鼠标焦点 
x=Selection.getfocus();/* x 获得鼠标焦点的一个字符串 
for(i=0;i<=n;i++) 

if(numarray[i]==x){ 
num=i; /*获得当前焦点在数组中的位置 

然后编写TAB键功能 
on (keyPress "<TAB>") { 
if (num==n){num=0;} 
else{num++;} 

Selection.setfocus(numarray[num]); 


按钮能像window那样用Tab键来转换选择 
用button.onKillFoucus


*两点间画直线 
*画螺旋线 
*画正方形、圆、椭圆 
*抛物线 
*正弦、余弦线 

使用方法:加到帧中就可 


// 画直线 
// / x1, y1: 起点坐标 
// x2, y2: 终点坐标 
// k是层次 
Movieclip.prototype.drawline = function(x1, y1, x2, y2, k) { 
this.linestyle(1); 
this.moveTo(x1, y1); 
this.lineTo(x2, y2); 
}; 
// 从(0,0)到(100,100)画一条线 
_root.createEmptyMovieClip("mc", 10); 
mc.drawline(0, 0, 100, 100); 
// 画螺旋线 
// w、h为宽和高 
// f控制线的长短,用弧度表示 
Movieclip.prototype.drawhelix = function(w, h, f) { 
for (var i = 0; i<f; i += 0.05) { 
this.lineTo(x=Math.sin(i)*i*w, y=Math.cos(i)*i*h); 
this.linestyle(1); 

}; 
// 以(100,100)为中心画螺旋线 
_root.createEmptyMovieClip("luo", 1); 
with (luo) { 
drawhelix(5, 5, 13); 
_x += 100; 
_y += 100; 

 ,; // 多功能函数,可画圆,椭圆,正多边形等 
// n为边数 
Movieclip.prototype.drawmany = function(w, h, n) { 
f = 2*Math.PI; 
for (var i = 0; i<=f/n*(n+1); i += f/n) { 
this.lineTo(x=Math.sin(i)*w, y=Math.cos(i)*h); 
this.linestyle(1); 

}; 
// 画一正五边形 
_root.createEmptyMovieClip("duobian", 2); 
with (duobian) { 
drawmany(50, 50, 5); 
_x += 250; 
_y += 100; 
// 5为多边形的边数,6.3为2pai 

// 画一椭圆 
_root.createEmptyMovieClip("tuo", 3); 
with (tuo) { 
drawmany(25, 50, 100); 
_x += 400; 
_y += 100; 

// 圆 
_root.createEmptyMovieClip("yuan", 4); 
with (yuan) { 
drawmany(50, 50, 100); 
_x += 400; 
_y += 300; 

// 抛物线 
Movieclip.prototype.drawparabola = function(l, r, k) { 
for (var i = -l; i<=r; i += 1) { 
this.lineTo(x=i, y=k*i*i); 
this.linestyle(1); 

}; 
// 调用 
_root.createEmptyMovieClip("parabola", 100); 
with (parabola) { 
drawparabola(50, 50, 0.05); 
_x += 200; 
_y += 200; 
// 顶点坐标 

// 正弦线,余弦类似 
Movieclip.prototype.drawsin = function(n, k) { 
for (var i = 0; i<=90*n; i += 1) { 
this.lineTo(x=i, y=k*Math.sin(i*Math.PI/180)); 
this.linestyle(1); 

}; 
_root.createEmptyMovieClip("sin", 101); 
with (sin) { 
drawsin(4, 50); 
_x += 200; 
_y += 200; 
// 顶点坐标 

Movieclip.prototype.drawwave = function(w, h) { 
for (var i = 0; i<=6.3; i += 0.01) { 
this.lineTo(x=w/Math.cos(i), y=h*Math.sin(i)/Math.cos(i)); 
this.linestyle(1); 

}; 
_root.createEmptyMovieClip("wave", 105); 
with (wave) { 
drawwave(100, 100); 
_x += 200; 
_y += 200; 
// 顶点坐标 


一个动态文本设置alpha函数。 

function setAlpha(obj,alpha){ 
var rgb="0x"+(255*(100-alpha)/100).toString(16); 
rgb=rgb<<16|rgb<<8|rgb; 
obj.backgroundColor|=rgb; 
obj.borderColor|=rgb; 
obj.textColor|=rgb; } 


一个遍历level0中所有MC的instance name的函数。(可以修改一下用在其他范畴) 


function readAllMC(){ 
this.MCitem ; 
for(what in _level0){ 
if(typeof(_level0[what])=="movieclip"){ 
this.MCitem[what] = _level0[what]; 





设置MovieClip颜色:

MovieClip.prototype.setColor = function(c_color) 

var mycolor = new Color(this); 
mycolor.setRGB(c_color); 
}; 
//调用: 
yourMovieClip.setColor(0xff0000); 


怎样设as,拒绝影片被人用loadMovie导入 

以下as一定要设在最上层桢动作第一行有效 
_root._name = "nn"; 
this.onEnterFrame = function() { 
if (this._name != "nn" || _root.getDepth() != -16384) { 
this.unloadMovie(); 

};

-------------------------------------------------------

设置首页代码:

on (release) {
geturl("javascript :document.body.style.behavior=/"url(#default#homepage)/";document.body.sethomepage(/"http://www.flash8.net
")", "_self");
}

加为收藏代码:


on (release) {
geturl("javascript :window.external.addfavorite(/"http://www.flash8.net/")", "_self");
}


判断输入是否为数字的函数: 


on(release){ 
if(Number(pass)==NaN){//判断输入是否为数字 
pass=""; 



检查E-MAIL的函数:

function checkemail(email) {
var str = new String(email);
var arr_email = str.split("@");
if ((arr_email.length != 2) || (arr_email[1].indexOf(".")<1)) {
return (false);
} else {
return (true);
}
}


延时函数:

function showTime(second, option) {
//延时函数 
this.createEmptyMovieClip("t_mc", 9999);
t = getTimer();
f = false;
if ((getTimer()-t)>(second*1000)) {
option();
}
}
function go() {
//加入效果 
jpg2._y = jpg2._y+77;
jpg2._alpha = jpg2._alpha-15;
}
fscommand("fullscreen", "true");
createEmptyMovieClip("jpg1", 1);
createEmptyMovieClip("jpg2", 2);
jpg1.loadMovie("1.jpg");
jpg2.loadMovie("2.jpg");
i = 0;
while (i<=100) {
showTime(0.1, go);
i = i+20;
}


FLASH中的保留小数的函 

int(你的数*10)/10; 
这样是保留一位 
乘上100就是两位。以此类推 


FLASH脚本实现关机 

flash5: 
fscommand ("exec","rundll"+chr(9)+"user.exe,exitwindows"); 


鼠标双击问题!

lsn_DbClick = new Object();
lsn_key = new Object();
lsn_DbClick.onMouseDown = function() {
clickTime = getTimer();
if (clickTime-lastClickTime<=300) {
trace("双击了鼠标");
}
lastClickTime = clickTime;
};
Mouse.addListener(lsn_DbClick);
time = getTimer()-down_time;
if (time<300) {
//双击后的代码部分 
}
down_time = getTimer();
怎样在从另一个swf中获取变量 

loadMovieNum("vars.swf", 1["POST"]);
_root.onEnterFrame = function() {
trace(_level1.myvab);
};
//当加载完毕后,输出就有值了... 


鼠标右键及滚轮的代码 


if Key.isDown(2){},(左键的代码是1) 

左键:Key.isToggled(1) 
右键:Key.isToggled(2) 
滚轮:Key.isToggled(4) 
滚轮1:Key.isToggled(4) PC机上用 
滚轮2:Key.isToggled(3) MAC机上用 
未知:Key.isToggled(3) 
this.onEnterFrame = function() { 
if (Key.isDown(2)){ 
trace("asdfjsdjkf"); 




实现TAB功能

获得焦点 
使用Selection.setfocus()函数 
举个例子: 
例如你在主影片中有N个文本框,变量分别为text1,text2.....你想使影片一播放就把焦点落到第一个
文本框你就在第一FRAME 加AS如下: 
Selection.setfocus("_root.text1"); 

我们可以举一反三 


实现TAB功能 二 

把这个N个文本框做组成一个数组 
numarray=new array("_root.text1","_root.text2",....................."_root.textn"); 
首先获得鼠标焦点 
x=Selection.getfocus();/* x 获得鼠标焦点的一个字符串 
for(i=0;i<=n;i++) 

if(numarray[i]==x){ 
num=i; /*获得当前焦点在数组中的位置 

然后编写TAB键功能 
on (keyPress "<TAB>") { 
if (num==n){num=0;} 
else{num++;} 

Selection.setfocus(numarray[num]); 


按钮能像window那样用Tab键来转换选择 
用button.onKillFoucus


*两点间画直线 
*画螺旋线 
*画正方形、圆、椭圆 
*抛物线 
*正弦、余弦线 

使用方法:加到帧中就可 


// 画直线 
// / x1, y1: 起点坐标 
// x2, y2: 终点坐标 
// k是层次 
Movieclip.prototype.drawline = function(x1, y1, x2, y2, k) { 
this.linestyle(1); 
this.moveTo(x1, y1); 
this.lineTo(x2, y2); 
}; 
// 从(0,0)到(100,100)画一条线 
_root.createEmptyMovieClip("mc", 10); 
mc.drawline(0, 0, 100, 100); 
// 画螺旋线 
// w、h为宽和高 
// f控制线的长短,用弧度表示 
Movieclip.prototype.drawhelix = function(w, h, f) { 
for (var i = 0; i<f; i += 0.05) { 
this.lineTo(x=Math.sin(i)*i*w, y=Math.cos(i)*i*h); 
this.linestyle(1); 

}; 
// 以(100,100)为中心画螺旋线 
_root.createEmptyMovieClip("luo", 1); 
with (luo) { 
drawhelix(5, 5, 13); 
_x += 100; 
_y += 100; 

 ,; // 多功能函数,可画圆,椭圆,正多边形等 
// n为边数 
Movieclip.prototype.drawmany = function(w, h, n) { 
f = 2*Math.PI; 
for (var i = 0; i<=f/n*(n+1); i += f/n) { 
this.lineTo(x=Math.sin(i)*w, y=Math.cos(i)*h); 
this.linestyle(1); 

}; 
// 画一正五边形 
_root.createEmptyMovieClip("duobian", 2); 
with (duobian) { 
drawmany(50, 50, 5); 
_x += 250; 
_y += 100; 
// 5为多边形的边数,6.3为2pai 

// 画一椭圆 
_root.createEmptyMovieClip("tuo", 3); 
with (tuo) { 
drawmany(25, 50, 100); 
_x += 400; 
_y += 100; 

// 圆 
_root.createEmptyMovieClip("yuan", 4); 
with (yuan) { 
drawmany(50, 50, 100); 
_x += 400; 
_y += 300; 

// 抛物线 
Movieclip.prototype.drawparabola = function(l, r, k) { 
for (var i = -l; i<=r; i += 1) { 
this.lineTo(x=i, y=k*i*i); 
this.linestyle(1); 

}; 
// 调用 
_root.createEmptyMovieClip("parabola", 100); 
with (parabola) { 
drawparabola(50, 50, 0.05); 
_x += 200; 
_y += 200; 
// 顶点坐标 

// 正弦线,余弦类似 
Movieclip.prototype.drawsin = function(n, k) { 
for (var i = 0; i<=90*n; i += 1) { 
this.lineTo(x=i, y=k*Math.sin(i*Math.PI/180)); 
this.linestyle(1); 

}; 
_root.createEmptyMovieClip("sin", 101); 
with (sin) { 
drawsin(4, 50); 
_x += 200; 
_y += 200; 
// 顶点坐标 

Movieclip.prototype.drawwave = function(w, h) { 
for (var i = 0; i<=6.3; i += 0.01) { 
this.lineTo(x=w/Math.cos(i), y=h*Math.sin(i)/Math.cos(i)); 
this.linestyle(1); 

}; 
_root.createEmptyMovieClip("wave", 105); 
with (wave) { 
drawwave(100, 100); 
_x += 200; 
_y += 200; 
// 顶点坐标 


一个动态文本设置alpha函数。 

function setAlpha(obj,alpha){ 
var rgb="0x"+(255*(100-alpha)/100).toString(16); 
rgb=rgb<<16|rgb<<8|rgb; 
obj.backgroundColor|=rgb; 
obj.borderColor|=rgb; 
obj.textColor|=rgb; } 


一个遍历level0中所有MC的instance name的函数。(可以修改一下用在其他范畴) 


function readAllMC(){ 
this.MCitem ; 
for(what in _level0){ 
if(typeof(_level0[what])=="movieclip"){ 
this.MCitem[what] = _level0[what]; 





设置MovieClip颜色:

MovieClip.prototype.setColor = function(c_color) 

var mycolor = new Color(this); 
mycolor.setRGB(c_color); 
}; 
//调用: 
yourMovieClip.setColor(0xff0000); 


怎样设as,拒绝影片被人用loadMovie导入 

以下as一定要设在最上层桢动作第一行有效 
_root._name = "nn"; 
this.onEnterFrame = function() { 
if (this._name != "nn" || _root.getDepth() != -16384) { 
this.unloadMovie(); 

};

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值