我战队想改成 重启梦想 求一个统一的战队名字格式式

苍井空xiazai_裸体美女火辣的人体艺术_2222ee不用下载_22cccxom谁能点拨一个迷茫于股市中的我?无量空涨的成交量, 来自于散户还是主力???用的是php+mysql做的。实时输入跟踪,支持单词添加
查看地址:
学习AS3.0的练习
查看地址:
库文件夹分类习惯·声音、图片各自放到独立的文件夹。 ·MC则根据栏目进行分类到不同的文件夹。 ·一般不用图形元件。 时间轴管理习惯·最上层为AS层,如果AS层超过三层,则建立专门的AS图层文件夹。多层AS层需要注意代码执行顺序。 ·第二层为标签层。 ·主场景其它图层按栏目进行文件夹分类,但一个MC内一般仅为一个栏目,不用分类。 ·相同性质而且相互影响不大的元件放一层,其它的独立分层,并按视觉效果进行上下分层。 ·loading、过渡动画、功能页面分在不同的场景。 && 元件命名习惯·库中元件的命名:采用中文命名,后边添加特定元件的后缀,比如我有一个“导航”的元件,按钮则命名为:“导航BTN”,影片剪辑则命名为:“导航MC”。声音和图片则直接使用“导航”命名。 ·命名的三步统一性:即元件在库中的名字,在场景中的实例名,以及所在层的名字尽量保持统一。比如一个元件在库中的名字为:“导航MC“,则它在场景中 的实例名将为“daohang_mc”,它所在的层名将为“导航”。这样在元件非常多,代码编写量非常大的时候,可以有效的节省命名和查找时间,同时避免 引用错误。 ·文本域命名:如果一个MC中仅有一个动态文本域,则统一命名为:“wenben_txt”,其变量名为“wenben_var”。如果有两个以上动态文本域,则根据其功能进行命名。 架构习惯·三层分离:主场景数据层,动画层,代码功能层进行分离。由于数据加载完成时,会导致短暂的动画不流畅,所以我一般在loading场景中把数据一起加 载完成,然后进入动画场景。大量的时间轴动画又会导致项目结构混乱,所以我一般又会把动画也处理成独立场景,将动画最后一贞复制,然后建立新的功能场景并 粘贴,所有的核心代码都集中在功能场景中。 ·MC结构:由于每个MC基本又相当一个独立的小SWF,所以它的结构也尽量遵从“三层分离”的思想。 ·MC双贞式:每个MC都保持两贞。尽管大部分情况下,都可以用一贞完成任务,但我还是会专门留一贞,为可能的贞数据刷新留有余地。 ·元件嵌套结构一般不超过三层,迫不得已的情况下,也要保证代码不写在三层以下的元件上。 ·外部调用SWF全部定义:_lockroot = true。 ·外部调用的SWF中绝不使用_level0,除非特别需要。 向过程的结构化AS代码编写习惯一、代码分布所有代码均写在时间轴上,一般都在第一贞,元件上绝不写代码。主场景上的代码负责对整个系统的初始设置,各MC时间轴上的代码各成一体。二、代码结构按代码编辑器中从上到下的顺序。1系统初始化:①界面初始化:包括编码设置,舞台设置,元件可见性,可用性等等初始设置。②变量初始化:时间轴或者全局变量初始化。③数组初始化:初始需要的数组,并利用循环进行赋值。④对象初始化:初始需要的所有对象,并注册侦听器。2、代码逻辑结构:这里是整个代码的逻辑结构,一般通过一系列的函数调用使各种功能有机结合。3、功能块儿:一般按逻辑结构中的顺序定义各个功能块儿,并封装到函数中。三、命名习惯全部采用中文拼音全拼。1、变量命名:使用“var”进行时间轴变量声明,并且采用中文全拼命名,示例:var liuyan="";2、数组和对象命名:采用全拼加对应的后缀,示例:var shuzu_array=new Array(); var liuyan_lv=new LoadVars();3、函数局域变量命名:使用全拼加“fc”后缀,示例:function fanye(anniu_fc);4、外部通信变量命名:外部传递给FLASH的变量,添加对应的后缀:&&& 示例:txt传递给FLASH的变量用:liuyan_txt,ASP则为:liuyan_asp。FLASH传递给外部的变量加“flash”后缀,示例:yeshu_flash。四、注释习惯1、注释的位置:我一般习惯把注释写在代码前面。也就是先注释再代码。2、注释频率:基本上是逐行注释,最少也是逐功能注释。3、注释结构:模块级代码用"==============="分隔。功能级代码用"——————"分隔。一般注释直接用"//"。下面是经典会员noahgenius补充的一些资料。1、自定义元件库的管理推荐用文件夹分类。最大的类别应该是功能模块,比如说就是导航,建立导航文件夹,文件夹里再有第二级的分类,我按照的是图片,按钮(包括MC按 钮),MC,有关联类的MC,主场景MC(就是可以被其他模块使用的,像Interface中的接口)。另外还有有个common功能模块,放组件,声 音,视频什么的共用元件。2、方法的命名变量的命名楼主都说了,我想谈谈函数的命名。推荐“骆驼”试命名法,从语法上来说是动宾结构,比如getMovieClipName(),四个词,第一个是动词,除第一个词外首字母大写,这样的命名比较好说明函数的用途。3、提高类的颗粒度,类功能单一化多写几个类没有坏处,类的功能尽量单一,不要让一个类做各种各样不相干的事,这样后期的修改会非常麻烦。4、基于接口的OOP编程java要求为每个类都配个interface,其实不用那么夸张。但是这个思路值得借鉴,让接口来代替具体的实现类跟别的类交互,如果以后有扩展,只需要再写个实现类,不用修改交互部分的代码了。5、设计比编码重要一上来就写代码绝对是不行的。先好好规划自己的系统,从大的流程到细小的逻辑实现,尽量的做到心中有数。这样才不会在做的过程中感觉混乱。居然到今天才发现后缀对于编程提示的用处,给名字加上一些特殊的后缀,在写脚本的时候就会有自动代码提示,而对于没有后缀的名字,写脚本的时候就不会有脚本提示了!汗,居然到今天才发现!支持自动代码提示所需的后缀:------------------------------------------------对象类型 后缀 ------------------------------------------------Array _array 按钮 _btn 摄像头 _cam Color _color ContextMenu _cm TextField _txt ContextMenuItem _cmi Camera _cam 日期 _date TextFormat _fmt Error _err LoadVars _lv LocalConnection _lc 麦克风 _mic MovieClip _mc NetStream _ns PrintJob _pj NetConnection _nc SharedObject _so Sound _sound String   _str Video _video XML _xml XMLSocket _xmlsocket XMLNode _xmlnode 如果定义一个名称时,参考上面的类型,加个对应的后缀,这样录入代码就简单了,可以获得更好的提示,减少不少麻烦。
代码如下:
System.useCodepage =var myLoader:LoadVars = new LoadVars();myLoader.onData = function(src:String) {var searchString:String =var index:Nindex = searchString.indexOf("&title&");bb =index = searchString.indexOf("&/title&");cc =myString =childStr = myString.substring(bb+7, cc);trace(childStr);};myLoader.load("/");这里是用百度网来测试,地址自己换,无所谓!
读完绝对超值!不管你是FLASH爱好者,还是FLASH专业制作者,我相信,下面的软件肯定有你没发现或没注意到的!现在就给大家介绍和FLASH有关的接近所有的制作软件及其下载地址。好了,不废话了。一、FLASH常用制作软件;FLASH8,FLASH CS3软件说明:我想大家基本上都用这两个软件吧(这里值得一说的是,如果你在用中文版的时候出现BUG,如无法导入位图,视频,无法发布EXE文件,这就是可能制作FLASH汉化版中存在的BUG了,所以这里建议使用FLASH英文原版,至少不会有这样的问题出现)下载地址:FLASH8英文版:FLASH8汉化文件:FLASH CS3英文版:FLASH CS3汉化文件:Flash Slideshow Builder v4.0 汉化版软件说明:Flash 幻灯/相册制作工具。这是一个专业的 Flash 相册制作工具下载地址:二、FLASH 3D制作软件Swift 3D v3.00 Build 184软件说明:Swift 3D 是专业的矢量 3D 软件下载地址:3DFlashAnimator4软件说明:一套理想的Flash动画制作软件,还可以制作出高水准具互动效果的3D Flash动画。下载地址:
三、FLASH制作辅助软件KoolMoves v6.12 汉化版软件说明:一个动画制作软件,能够制作 Flash 动画以及与动画相关的内容下载地址:SWFText v1.3 特别版软件说明:一款Flash文字动画制作工具下载地址:FlaX V4.10软件说明:FlaX 是一款制作 Flash 文字特效的工具下载地址:flash水波制作器v2.3绿色汉化版软件说明:Sqirlz Water Reflections专门用来给图片做动态美工的软件下载地址:SWiSHmax v1.0 Build
特别版软件说明:可轻易的在短时间内制作出复杂的文本,图像,图形和声音的效果下载地址:A4Desk v5.84(FLASH网站制作)软件说明:基于模板的所见即所得的FLASH菜单和FLASH网站创作工具,无需编码即可制作出吸引人的FLASH。下载地址:123 Flash Menu v<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".0.1250 特别版软件说明:一款制作Flash菜单的软件,内置数计百计的模板,支持多种浏览器,可所见即所得,并有预览功能下载地址:SWF Lock and Load v1.208 汉化版软件说明:一款帮助您为常规 Flash 剪辑加入预载器(如:动画显示的“正在加载”等等)的工具下载地址:eFlashMTV V4.6 build 软件说明:一款快速制作flash MTV的软件.下载地址:Flash库批量改名器 V1.0软件说明:轻松的批量库改名工具下载地址:Adobe After Effects7.0 绿色专业版软件说明:Adobe After Effects 7.0 软件可以帮助您高效、精确地创建无数种引人注目的动态图形和震撼人心的视觉效果。下载地址:Adobe Audition 3.0 汉化特别优化版软件说明:一个专业音频编辑和混合环境。下载地址:particleIllusion 3.01a 幻影粒子特效软件软件说明:一套分子效果系统及合成影像工具,下载地址:Adobe Photoshop CS3 10.0.1.0 绿色简体精简版软件说明:处理图片的下载地址:
FLASHSWF Encrypt v<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year=".4软件说明:为你的Flash SWF文件提供了安全保护地址:FLASHSothink SWF Decompiler v3.7.70607软件说明:上 Flash 电影反编译和元素提取的领军工具
下载地址:Sothink SWF Quicker v2.1 build 60405 特别版软件说明:一款可以直接将SWF文件导入软件中直接编辑和修改
下载地址:Flash橡皮擦 V1.0 绿色特别版软件说明:一款删除Flash对象的工具软件下载地址:Action scrīpt Viewer v5.01软件说明:一款可以分析 Flash 文件并将其中的动作脚本(action scrīpts)分解出来下载地址:Flash吸血鬼 2.2软件说明:不管别人把Flash做成什么样的EXE,SWF,都可以破解
下载地址:FLASHSWiSHVideo v2.0 Build
汉化版软件说明:一款将视频文件转换为SWF文件的工具
下载地址:Audio2SWF v1.003 特别版软件说明:可以将您的音乐文件转换为 Flash,导出格式支持 SWF/HTML/FLV/HQX)EXE等下载地址:Flash转换王 v8.9 Build 2050软件说明:国内首个可以将Flash的SWF动画转换为VCD/SVCD/DVD/AVI/MPEG4等转换工具下载地址:flash changer1.0软件说明:一款支持批量将EXE→SWF或SWF→EXE的工具下载地址:GIF2SWF v2.5软件说明:一个可以把gif文件转换Flash的swf文件的小工具
下载地址:iTiny Magic Swf2Gif 1.35 汉化版软件说明:Swf2Gif 可以帮助您把 SWF Flash 动画转为 GiF 动画
下载地址:终于总结完了,到发帖截止,以上下载地址都亲自测试可以下载
最后来一句:
祝大家新年快乐、心想事成!
一、新建一MC(timedelay).只有三帧
在第1帧上建一矩形,充填上颜色。(主要是为了下次做好的控件放到舞台上好找)第一帧代码:_root.stop() ;var i:Number =0;datetime=new Date();minu1=datetime.getMinutes ();second1=datetime.getSeconds ();delete minu1;第二帧:datetime2=new Date();//trace(Stime);minu2=datetime2.getMinutes ();second2=datetime2.getSeconds ();if(minu2&minu1){ i=1;}else{if (second2&=second1+Stime) //Stime是延时变量,后面有介绍
{i=1;}}delete minu2;
stop();if(i==1){_root.play();play();
}else{gotoAndPlay(2);
直接将下面的代码复制在需要延时的帧上:
stop();var num = 5;//定义你需要延时的秒数;function a() {&gotoAndStop(2);}setInterval(a, num*1000);function num_dec() {&if (num&0) {&&num--;&} else {&&clearInterval(myInterval);&}&createTextField("my_txt", 1, 260, 60, 300, 100);&my_txt.text =}myInterval = setInterval(num_dec, 1000);
源代码:onClipEvent (load) {stop();fscommand("allowscale", "false");error.useHandCursor =fscommand("showmenu", "false");fscommand("trapallkeys", "true");function reload() {fscommand("exec", "reload.bat");}
onEnterFrame =&function(){reload()}reload.bat文件:START ../autorun.exe
友情提示:别乱改fscomand,也别乱改bat 文件,乱改后果自负!
fscommand("exec","off.bat")off.bat中写shutdown -f -t 关于shutdown不但可以关机,还可以重启,注销,甚至at XX:XX shutdown还可以实现,在几点关机 。
-s 关机-r 重启-f 强行关闭-t 显示对话框提示时间
、var a = Math.abs(-7); // 求绝对值(这里是求-7的)
2、function myFunction(myNum) {var newNum = myNum+5;return newN}trace(myFunction(8));//定义 调用并输出函数值
3、多数情况下,需要用到鼠标光标在主场景中的位置,所以可以使用_root._xmouse和_root._ymouse表示。onClipEvent (enterFrame) {_x = _root.__y = _root._}//让影片剪辑和鼠标保持相同坐标
4、将矩形影片剪辑作为遮罩图形在矩形影片剪辑的动作面板中添加如下Actionscrīpt:onClipEvent (load) {xs = _ys = _}onClipEvent (enterFrame) {_xscale = 100*(_root._xmouse-_x)/(xs/2);_yscale = 100*(_root._ymouse-_y)/(ys/2);}在load事件中,用变量xs和ys取得影片剪辑初始状态下的宽度和高度值。在enterFrame事件中,计算鼠标位置与矩形影片剪辑中心 的距离,算出它与矩形宽度和高度值的比值,然后作为_xscale和_yscale的值。该动画实现移动鼠标位置以改变遮罩效果
5、Array对象(动作面板的“对象”/“核心”目录)即数组,它用来记录成组的相关或相似变量。创建一个空的数组:myArray = new Array();如下所示的Actionscrīpt创建一个确定值的数组并在输出窗口中显示每个元素的值:weekDay = new Array("SUN", "MON", "TUE", "WED", "TUR", "FRI", "SAT");for (var i = 0; i&7; i++) {trace(weekDay);}
数组中还可以嵌套数组,即构成多维数组,如下所示:polyArray = new Array();for (var i = 0; i&3; i++) {polyArray = new Array(i*3+1, i*3+2, i*3+3, i*3+4);trace(polyArray[0]+" "+polyArray[1]+" "+polyArray[2]+" "+polyArray[3]);}输出窗口中将显示:1 2 3 44 5 6 77 8 9 10
--------------------------------------------------------------------------------
判断本机播放器版本并进行下载
ss=System.capabilities.if(substring(ss,5,1)&&"7"){getURL("" target="_blank" &/cn",_blank);}//那个7就是版本号
用奇偶判断来做一个按钮的声音开关第一帧加入(第一帧空帧):t=0 //给t赋初值
第二帧加入:stop(); //停止在第二帧ms=new Sound //新建一个声音对象msms.attachSound("sound") //空声音对象从库中调用连接名为sound的声音ms.start() //ms开始播放ms.onSoundComplete=function () { //当ms这个声音播放完后执行以下ASms.start //重复播放ms}
第二帧上面的控制按钮加入on (release) { //当鼠标松开的时候执行下面ASt=t+1 //t的值等于本身的值加1if (t%2==1) { //如果T取摸2等于1ms.stop() //则ms停止播放b=ms.position/1000 //b的值等于现在ms声音停止的位置} else { //否则ms.start(b) //ms从刚刚停止的地方(b)开始播放}}
实现倒放(可以自行联想作出许多不间断缩放效果,如动态按钮等,曾经我写过一篇这样的教程):给放在场景中比如有40桢的MC添加如下语句
onClipEvnt(load){gotoAndStop(40);//影片载入时就跳转到40桢并停止}
onClipEvent(enterFrame){prevFrame();//不断的播放前一桢,}
--------------------------------------------------------------------------------
一些简单的AS和一些程序思路,掌握最好:
1.复制MC并随机设定子MC的相关属性:duplicateMovieClip("mc","mc"+i,10+i);setProperty("mc"+i,_x,random(400) );//x坐标setProperty("mc"+i,_y,random(300) );//y坐标setProperty("mc"+i,_alpha,random(100) );//透明度属性i++;if(i&200){//设定复制的个数;i=1;}--------------------------------------------------------------------------------
2.文字的逐个出现(打字效果)Frame1: text="引号内是要出现的字";ll = text.// 表示text文本的字符数;i = 1;//用于控制输出的变量;
Frame4: if (i&ll+1) {text1 = text.substring(0,i);//从第0个字符开始抽取显示,抽取长度为i;i++;}Frame5:gotoAndPlay(4);--------------------------------------------------------------------------------
3.冒泡法排序:for(i;i&n;i++){ //外层循环;for(j=n;j&=i+1;j--){//内层循环;if(a[j]&a[j-1]){temp=a[j];a[j]=a[j-1];a[j-1]=//交换位置;}
--------------------------------------------------------------------------------
4.插入法排序(算法复杂性比冒泡法要小):for(i=2;i&=n;i++){j=i;if(a[j]&a[j-1]){temp=a[j];a[j]=a[j-1];a[j-1]=j--; }}
--------------------------------------------------------------------------------
5.一个按钮控制声音的播放与停止: on(release){a=a+1;if(a%2==1){//奇偶判断;mysound.stop();_root.b=int(ji.position/1000);//记录下停止时播放的位置;}else{ mysound.start(_root.b);//从上一次停止的位置开始继续播放;}}
--------------------------------------------------------------------------------
6.MC以恒定速度旋转
onClipEvent (enterFrame) {_rotation +=6;//设定每次的旋转角度值;}
--------------------------------------------------------------------------------
和WEB结合设计中用层来遮住FLASH
1.在flash的parameters里加入 &param name="wmode" value="transparent"& 2.&body ōnblur=self.focus()&
遮住场景以外的部分Stage.scaleMode = "exactFit";
--------------------------------------------------------------------------------
判断输入是否为数字的函数:
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 = 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 = clickT }; Mouse.addListener(lsn_DbClick); time = getTimer()-down_ 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==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| obj.backgroundColor|= obj.borderColor|= obj.textColor|= }
--------------------------------------------------------------------------------
一个遍历level0中所有MC的instance name的函数。(可以修改一下用在范畴)
function readAllMC(){ this.MC 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(); } };
--------------------------------------------------------------------------------
一、Flash与Asp之间的交互
Flash与Asp的通讯是用Http协议,其请求格式为地址?参数1=值1&参数2=值2
即是在目的地址后面加上问号,再跟上参数字符串,参数之间用“&”号格开。如:
在上面的请求中,请求的目的文件为:,第一个参数名为userid,值为guest,第二个参数名为pwd,值为123。
Flash与Asp之间的交互无非就是构造上面的请求字符串。
1、在Flash中,先构造好请求的字符串,然后利用函数LoadVariables(),就可以向服务器端发送请求和参数。我们来详细看看LoadVariables()这个函数。
函数的标准格式为loadVariables ("url" ,level/"target" [, variables])
在函数的各个参数中,url就是上面说的请求字符串。level/“target”是返回值的“层次”或者“目标”,这两个当中只能指定一个。variables是请求的方式,其值可以是“Get”或者是“Post”,一般Get用于参数值比较短的传送,Post用于参数值比较长的传送,这个参数是可选的。比如loadVariables (" ...pwd=123" ,0, “GET”)就是一个完整的请求。
2、在Asp中,先要取得从Flash端传送过来的参数,这跟操作普通的HTML表单是一样的。都是利用Request对象,其语句为:
username = Request(“userid”)password = Request(“pwd”)
userid和pwd就是从Flash端发送过来的参数名,如果是上一步中的请求字符串,username的值为guest,pwd的值为123。3、在服务器端处理完请求,获得所需要的值后,Asp向Flash端发送结果,跟从Asp中操作Html语言一样,都是用Response对象,其语句为:
Response.Write(“login=true&des=success”)
其返回值1的名为login,值为true,返回值2的名为des,值为success。
4、在Flash端取得从服务器端返回的值,与操作Flash中普通的变量没什么不同。如:_root.gotoAndPlay(eval(login))表示的是跳转到login的值的那一帧。但要注意的是在发送请求一段时间之后,才能用返回值,不然取得的是尚未返回的值,错误就在所难免了,而且这一类的错误很难发现,用的时候要多加小心。
二、Asp与数据库之间的交互
在Asp与数据库的交互一般是用ADO控件。其读取数据库的语句为:
‘定义一个Connection对象set conn=Server.CreateObject("ADODB.Connection") ‘用Connection对象打开数据库,这里打开的是sql server,数据库的地址为192.168.1.32‘数据库的用户名为zengyu,密码为123conn.open application("Driver={SQL Server};SERVER=192.168.1.32;DATABASE=UID=PASSWORD=123")‘创建一个Recordset对象set rstemp=Server.CreateObject("ADODB.Recordset")‘构造一个sql语句sqltemp1="select * from UserInfo where userid='"&strname&"' and password='"&strpassword&"'"‘查询数据库rstemp.open sqltemp1,conn, 1, 1 if not(rstemp.bof and rstemp.eof) thenResponse.Write (“login=true”)end if
这里实现的只是简单地查询数据库,要想了解Asp操作数据库更详细的东西,可以找Asp与数据库方面的资料深入学习一下。
三、例子――登陆的实现
下面我们来制作一个简单的实例,在Flash端输入用户名和密码,通过Asp查询数据库,如果用户名和密码正确,就跳转到登陆成功界面,否则就跳转到登陆失败界面。
1、新建一个Flash,在场景中制作两个文本框和一个Button,如图2所示。其中用户名对应的文本框属性如图3所示,密码对应的文本框属性如图4所示。注意其中的文本类型和变量名。2、创建另外两个关键帧,分别命名为“true”和“false”,并分别显示“登陆成功”和“登陆失败”字样。
3、在Button的Actionscrīpt中增加下面的语句,注意更改其中的ip地址。
on (release) {loadVariables("=" add eval(_root.us ...pwd=" add eval(_root.pwd),this, "GET");now = new Date();begintime = now.getSeconds();while(true) {endt = new Date();endtime = endt.getSeconds();if (endt - now & 2){_root.gotoAndPlay(eval(login));}}}
4、在Sql Server数据库(数据库的类型不重要,改一改连接串就可以的)中,建立一张名为“userinfo”的表,其中有“Userid”和“Password”两个字段。
5、建立一个guest.asp文件,文件内容为
&%username = Request(“userid”)password = Request(“pwd”)set conn=Server.CreateObject("ADODB.Connection") conn.open application("Driver={SQL Server};SERVER=192.168.1.32;DATABASE=UID=PASSWORD=123")set rstemp=Server.CreateObject("ADODB.Recordset")sqltemp1="select * from UserInfo where userid='"&username&"' and password='"&strpassword&"'"rstemp.open sqltemp1,conn, 1, 1 if not(rstemp.bof and rstemp.eof) thenResponse.Write (“login=true”)Else Response.Write (“login=false”)end if%&
6、将Flash文件和Asp文件部署到IIS服务器中,然后打开Flash文件,输入登陆信息就可以看到实例的效果了。
--------------------------------------------------------------------------------
FLASH调用外部文件详解
Flash加载外部文件Flash可以通过帧、按扭、影片剪辑来调用外部文件。调用的外部文件包括:外部文本文件、外部程序文件、外部*.swf文件、外部图片文件、外部音乐文件、外部脚本文件。一.调用外部文本文件:(文本文件开头要以flash中的动态文本框的变量名开头,如msg=".........."这样的形式,要和编辑的Flash文件放在同一目录下)1.用工具箱中的文本工具,选择动态文本,给动态文本一个变量名,如:msg,在编辑区拖出一个文本框2.制作两个按扭(一个调用,一个清除)拖放到场景中。3.调用按扭上添加AS:on(release){//松开鼠标后执行下面的代码;loadVariables("msg.txt",msg);//调用和你编辑的Flash处于同一目录下的msg.txt文本文件到动态文本msg中;System.useCodepage=//使外部文件的中文字符能够正确显示;}4.清除按扭上的AS:on(release){//松开鼠标后清楚动态文本框中的内容;msg="";}5.Ctrl+Enter测试.
当然代码也可以写在帧上:(调用按扭的实例名是bt1,清除按扭的实例名是bt2)在第一帧上加如下代码:stop();_root.bt1.onRelease=function(){loadVariables("msg.txt",msg);System.useCodepage=}_root.bt2.onRelease=function(){_root.msg="";}
Ctrl+Enter测试.
调用的外部文本文件能够滚动:1.用工具箱中的文本工具,选择动态文本,给动态文本一个变量名,如:msg,在编辑区拖出一个文本框2.新建一层,制作两个按扭(一个调用,一个清除)拖放到此层中3.新建一层,在动态文本框的右侧用矩形工具画一个竖条,高度和动态文本一样;再制作一个向上的方向"箭头"按F8转为按扭元件;复制一个"箭头"按扭,垂直镜象,使这两个按扭和竖条的两端对齐.4.调用按扭上的AS:on(release){//松开鼠标后执行下面的代码;loadVariables("msg1.txt",msg);//调用msg1.txt文本文件到动态文本框msg中;System.useCodepage=//使外部文件的中文字符能够正确显示;}清除按扭上的AS:on(release){_root.msg="";//清除动态文本框中的内容;}向上的按扭上的AS:on(press){//在按扭的感应区上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll-1;//文本向下滚动一行;}向下的按扭上的AS:on(press){//在按扭的感应区上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll+1;//文本向上滚动一行;}Ctrl+Enter测试.
当然代码也可以写在帧上:(调用按扭的实例名是bt1,清除按扭的实例名是bt2,向上按扭的实例名是:up,向下按扭上的实例名是down)在第一帧上加如下代码:_root.bt1.onRelease=function(){//松开鼠标后执行下面的代码;loadVariables("msg1.txt",msg);//调用msg1.txt文本文件到动态文本框msg中;System.useCodepage=//使外部文件的中文字符能够正确显示;}_root.bt2.onRelease=function(){//松开鼠标后执行_root.msg="";//清除动态文本框中的内容;}_root.up.onPress=function(){//在向上按扭上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll-1;//文本向下滚动一行;}_root.down.onPress=function(){//在向下按扭上每按一次鼠标执行下面的代码;_root.msg.scroll=_root.msg.scroll+1;//文本向上滚动一行;}Ctrl+Enter测试.
二.调用外部*.swf文件(加载到影片剪辑中):外部*.swf文件要和编辑的Flash文件放在同一目录下1.新建立一个空的影片剪辑mymc,把它放在场景中,实例名是:mymc.2.新建一层,制作两个按扭(一个调用,一个清除)拖放到此层中3.调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码;loadMovie("flash8.swf","mymc");//加载外部的"flash8.swf"文件到"mymc"空影片剪辑中;mymc._x=70;//加载影片的X轴坐标;mymc._y=20;//加载影片的Y轴坐标;mymc._xscale=70;//加载影片的宽度;mymc._yscale=70;//加载影片的高度;}清除按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码unloadMovie(mymc);//删除用loadMovie加载的*.swf文件;}Ctrl+Enter测试
三.调用外部*.swf文件(加载到时间轴上):外部*.swf文件要和编辑的Flash文件放在同一目录下1.制作两个按扭(一个调用,一个清除)拖放到场景中2.调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码loadMovie("flash8.swf",1);//加载外部的"flash8.swf"文件到场景中,层深为1;}清除按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码unloadMovie(1);//删除层深为1的用loadMovie所加载的"flash8.swf"文件}Ctrl+Enter测试。当然二和三的代码都可以写在帧上。
四.调用外部图片(加载到影片剪辑中)外部图片必须和正在编辑的Flash文件放在同一目录下1.制作两个按扭(一个调用,一个清除)拖放到场景中2.制作一个空的影片剪辑,拖到场景中,实例名是:3.时间轴上第一帧上的AS:i=0;//定义一个变量i,并且赋初值为0;调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码;i++;if(i&9){//因为外面这有9张图,当变量大于9的时候,让变量为1,这样能够使加载的图片是连续的,即,每点一次按扭,就换一张图,等到换到第9张图,再点按扭,则循环到第一张图(j1.jpg到j9.jpg,因为没有j0.jpg,如果i=0,则会提示没有找到j0.jpg);i=1;}loadMovie(("j"+i)+".jgp",mymc);//从j1.jpg开始加载图片到影片剪辑mymc中;mymc._x=110;//以下设置加载图片的属性mymc._y=35;mymc._xscale=130;mymc._yscale=130;}清除按扭上的AS:on(release){unloadMovie(mymc);//删除掉用loadMovie加载到影片剪辑的图片;}Ctrl+Enter测试。当然AS可以写在帧上。
五.调用外部声音文件(加载到场景中)外部声音文件必须和正在编辑的Flash文件放在同一目录下1.制作两个按扭(一个调用,一个清除)拖放到场景中2.调用按扭上的AS:on(release){//鼠标离开按扭后执行下面的代码;mySound=new Sound();//建立一个新的声音对象mySmySound.loadSound("zaihuni.mp3",true);//加载外部的*.mp3声音文件到mySound对象中,并且按流的方式播放(参数为false时,是以装载完后播放);}清除按扭上的AS:on(release){mySound.stop();//当按下清除按扭后,停止声音的播放}Ctrl+Enter测试。
--------------------------------------------------------------------------------
加载外部图片
如果你的动画中有很多的图片.如果都放到一个SWF文件.可能打开或是下载会很慢.这样就影响了观看效果及速度,那么你可以利用载入外部图片的方法,只要把图片按名称放到你网上的一个目录里(和你的SWF文件同一个目录),那么就可以解决这个问题
前十祯你做一个载入LOADING.从第十一祯开始
新建一个图层.起名为AS层
在AS图层的第十一祯加入一个关键祯,然后打开动作面板,加入以下AS
i = 0;//初始化变量loadMovie ("p040.jpg", "pic");//在播放原始 SWF 文件的同时将p040.jpg 文件//加载到 Flash Player 中的叫PIC的这个影片剪辑中。
上面的语句是实现了加载一张.我们要它加载多张.所以要用到IF语句.在AS层的第六十祯处加入一个关键祯,打开动作面板,加入AS语句:
i++;//变量i递增if (i &= 21) {//当变量i递增到&=21时.这里的21是因为我准备了二十一张要加载的图.如果你加载十张.那就把这里的21改为10就可以了i = 0;//则变量为0,即重新加载}loadMovie (("p04" + i) + ".jpg", "pic");//如果不是.则继续加载.这里的p04+i就等p04i.也就是说i是几.这里就是p04*,比如i为12,则p04+i就等于p0412gotoAndPlay (12);//跳转到第十二祯
所以.在这里给图片起文件名时.就要按照这个原则来起的.准备好的图片要和你的主调用SWF文件入在同一个目录下,或者你也可以加载时用绝对路径,那就要改成" target="_blank&qu ... /p04";+i+".jpg"
图片的大小最好是事先调整好的.在你做好的PIC这个加载用的MC里.它的位置是放在XY坐标为0的位置,加载进来图是以这个MC左上角为准的,也就是说加载进来图的左上角与加载用的MC的左上角是重合的--------------loadMovie("图片名",newname); 以上语法以下用法on(release){loadMovie("pic.jpg", "mc");mc._x=50;mc._y=50mc._xscale=40;mc._yscale=40}
--------------------------------------------------------------------------------
加载外部文本文件的3种方法
不管那样方法,文本文件要和主文件在同一目录下,再就是在这儿的文本文件名为 b.txt
*第一种方法txt=
1、创建一个文本框,给此文本框一个变量名txt;2、文本格式为:动态;3、选:多行输入4、在第一帧上增加脚本语言。(按F9)loadVariablesNum("b.txt",0);//b.txt是文件名,0是场景中的根目录然后打开poems.txt文件,在记事本里输入:txt= 注意:在加载之前对文本文件进行转换,另存为Unicode编码格式。
*第二种方法 在主文件帧上输入防乱码的AS按钮实现引用外部文本文件的效果:第一步:主场第一帧AS:System.useCodePage =//防止乱码
第二步:在按钮上写AS:on (release) {_root.loadVariables("b.txt");//b.txt文本名}
**第三种方法 使用构造器,将文本拆分为若干字符串来显示.从根本上防止乱码.,也就是说直接在 txt 里面写东西就行了。代码如下:
lala = new LoadVars();//构造函数;创建 LoadVars 对象。然后可使用该 LoadVars 对象的方法来发送和加载数据lala.onData = function(rw) {//当lala被实例化并显示在时间轴上时将触发a_txt.text = replacePunc(rw);//};
function replacePunc(str) {//执行将文本拆分为多个字符串var tempArray = str.split("\r\n");//拆分为多个子字符串var tempstr = new String();for (var i = 0; i&tempArray. i++) {tempstr += tempArray+}}
System.useCodepage =//通知 Flash Player使用 传统代码页来解释外部文本lala.load("b.txt");
本人觉得第三种办法好
--------------------------------------------------------------------------------
利用ShareObject实现Flash数据存储
记得前些天看到有人问flash怎么在本地存储信息的问题想起在看到的一篇关于SharedObject的文章挑了一部分翻译了一下,也做了一些补注。第一次做翻译,弄得不好各位多见谅。
什么是本地ShareObject?
通过flash 6 player,开发人员已就可以在客户端存储数据了,就像cookies一样。ShareObject有两种格式:本地和远程。这篇文章只讨论
本地ShareObject.远程ShareObject一般和flash communication server一起使用。一个本地ShareObject只需要flash 6 player,仅此而已
。很多情况下,ShareObject提供了除cookies外的另一种选择,这是许多开发者没有考虑过的。
存储简单数据
在ShareObject中存储简单数据是相当简单的工作,我们先用ShareObject存储一个用户自定义的对象,然后将讨论用ShareObject存储内建
类的实例的问题。一个用户自定义对象可以这样创建:myObj = new Object(); //or myObj = {};
在ShareObject中存储myObj是很简单的,首先你需要创建一个本地ShareObject的引用:myLSO = SharedObject.getLocal("foo");
getLocal方法的第一个参数是ShareObject的名字,getLocal()方法也有第二个可选参数:一个字符串类型的路径。大多数情况下你用不到这个参数,除非你在多个swf文件中共用同一个ShareObject。现在为了在ShareObject中储存数据,你需要给ShareObject指定“数据特性”(data property)。现在创建一个ShareObject引用,以及你想存储的对象,最后存储这个对象到“数据特性”中。例子:myLSO = SharedObject.getLocal("foo");myObj = {};myObj.fname = "Jessica";myObj.lname = "Smith";myLSO.data.myObj = myObj
*myLocalSharedObject.data描述:只读属性,用来存储被存储到“数据特性”中的对象的属性,这些属性可以共享/存储,每一个属性可以是各种基础数据类型(数组,数字布尔值等)对象。*
现在myObj已经存储在SharedObject中了,今后你可以通过对SharedObject数据属性的存取来实现对myObj的存取,下面是一个例子,这个例子检测是否数据已经被存储到SharedObject中了,如果没有,它将数据存储进去,如果已经存在,则在输出窗口输出。当你将这些代码放到一个空的电影的第一祯后,你可以运行它一次,然后在运行一次,第二次运行你可以看到你存储的数据被输出。
*一定要先保存动画,否则你的动画只是在windows临时文件夹中运行,不能存储数据。****************myLSO = SharedObject.getLocal("foo");if(myLSO.data.myObj == undefined){ trace("Storing Data, run me again"); myObj = {}; myObj.fname = "Jessica"; myObj.lname = "Smith"; myLSO.data.myObj = myO }else{ trace("Retrieving Data"); var firstname = myLSO.data.myObj. var lastname = myLSO.data.myObj. trace("First Name: "+firstname); trace("Last Name: "+lastname); }
*运行一次以上后,你可以将程序改为myLSO = SharedObject.getLocal("foo"); trace("Retrieving Data"); var firstname = myLSO.data.myObj. var lastname = myLSO.data.myObj. trace("First Name: "+firstname); trace("Last Name: "+lastname);
你会发现无论你重复运行多少次,甚至关闭flash后重新进入,仍然能够得到firstname和lastname的值。另外你应该可以理解getLocal()方法的参数的作用了,它用来表示你所存储的数据的载体名称,是必不可少的。例如本例中的数据都存储在名为foo的SharedObject中,只有getLocal("foo"),你才能得到你想要的结果。*
你还可以存储更多内建类型:数组,布尔值,日期,数字,对象,XML,undefined,null
下面是一个将日期实例存储在SharedObject中的例子:myLSO = SharedObject.getLocal("DateStorage"); myDate = new Date(); myLSO.data.myDate = myD *****译者注*****存储简单数据的方法到这基本上就介绍完了,是不是很简单?为了方便大家理解,我做了一个简单的例子:你可以在文本框中输入内容,然后点击储存,以后任何时候你打开这个swf,文本框中总是上一次储存的内容。
我现在想到的对SharedObject最有意思的应用就是存档!只要将与游戏相关的数据,如时间,分数,等级,屏幕位置等相关数据存储再在必要的时候提取出来,基本上就算是实现存档取档功能。希望有兴趣的朋友试试。另外,在使用SharedObject之前,别忘了把你的Flash Player的文件存储设置为无限制,如图:
否则,超过了Player文件存储的上限(默认好像10k),ShareObject将不起作用
存储复杂数据一般指得是存储自定义类的实例。这一部分因为时间关系(要复习考试)没有翻译,等有时间再来跟大家讨论。
--------------------------------------------------------------------------------
加载外部图片及对加载图片的控制
许多朋友都在问如何load外部的文件,如load jpg 、load swf 、load sound等等 load进来后又该如何控制?如何进行加载的判断?今天这个小教程讲的是加载外部
图片(jpg)的问题,在这个小教程里,你可以学会一些小知识,举一反三,相信你会
有所收获。
先看看本例的效果
来看看代码及其简析:
Stage.showMenu=//屏蔽右键,当然这样无法完全屏蔽Stage.scaleMode = "noBorder";//播放器无菜单Stage.scaleMode = "noScale";//禁止缩放//上面的代码只是个人的爱好。this.createEmptyMovieClip("preloader", 10000);this.createEmptyMovieClip("mc", 10001);//动态创建一 mc,用来装载图片mc.loadMovie("test.jpg");//load 一名为test的图片(jpg格式)mc._visible =//先令mc不可见/*------------------------------------------------preloader.onEnterFrame = function() {var l = mc.getBytesLoaded();var t = mc.getBytesTotal();var getPercent = l/t;loadText = Math.round(getPercent*100)+"%completed";//一动态文本框的var: loadTestloadBar._width = getPercent*100;//进度条的长度,主场景中其 instance name: loadBarif (l&0 && l&=t) {mc._visible = 1;delete this.onEnterF//加载完毕后令mc可见,并stop loop (delete this.onEnterF)}*/ ----------------------这段代码就是用来判断加载的情况//-------------------------------------------------------------------------------MovieClip.prototype.jump = function(scale, frequency, quotiety) {//三个参数,scale--图片的比例 frequency---弹性的频率 quotiety---弹性系数this.tempo += (scale - this._xscale) *this.tempo *=this._xscale = this._yscale += this.//令图片位于场景的中间(550X400)this._x = 275-(this._width/2);this._y = 200-(this._height/2);
};//--------图片弹性效果的设置,这种效果你可以用在其它方面,比如按钮
//-----------判断鼠标事件,当鼠标与图片碰撞时调用自定义的函数并赋值mc.onEnterFrame = function() {if (this.hitTest(_root._xmouse, _root._ymouse, true)) {this.jump(70, .9, .6);} else {this.jumpl(30, .6, .5);}}};
以上代码都在主场景第一帧。
手动建一MC,画一条线用做进度条,把MC从库中拉到主场景,instance name: loadBar。在主场景中建一动态文本框,用来显示加载的百分比,var: loadTest
后记:加载完毕后就可以对其进行用关的操作,如果没有加载完就进行操
作那是不行的,所以要注意进行加载的判断,这在load外部文件时显得尤其重要。
--------------------------------------------------------------------------------
二.语法相关:
1.首当其冲的还是点语法,他是在编程时用来指明与某个对象的相关的属性和方法,还可用于标识对象的路径。 比如,要获取主场景中的Myball这个影片剪辑的x坐标值语法为_root.Myball._x。这其中还有一个必须引起注意,初学者常常以为这里的Myball是指给库里的对象命名,如图二:
其实这是不对的,在程序中出现的名字,我们习惯上称为实例名,其正确的命名方法是在场景中选定需要命名的对象,然后在其属性面板对其命名,如图三:
当然还有在加载外部的图片,SWF或者直接调用库里的声音,MC,那还可以通过程序本身直接给对象添加实例名,这些技巧以后遇到的时候再给予解释!
点语法的对象名称中有两个特殊的名称:_root和_parent; 其中_root表示主场景,而_parent可以实现读取和设置包容当前物件的父物件的任何属性。我自己不知道是怎么养成的习惯,很少使用_parent,我比较喜欢采用一律从主场景来定位对象的方法。可能有时候这样定位并不如两种定位方法结合来的方便,但是我觉得这样做的最突出的优点是便于差错,因为你的路径一律是从上到下的(从主场景到某个内层的MC或按钮)哪一个层级出了问题很容易看出来,不用在MC和场景间来回切换,查谁是谁的父,谁是谁的子!另外我还有一个习惯,就是即使对象是在主场景中,我也喜欢在控制他的时候加上一个_root 。比如说主场景中的Myball这个MC是个运动的球,要用按钮控制让他停止,下面的语句可以实现:on(release){Myball.stop();}
但是我一般写成:
on(release){_root.Myball.stop();}
当然,这只是我的个人习惯,也许大家看了觉得我在自找麻烦。但是,我之所以讲出来,是因为我觉得这是一个习惯,就是保有一种路径的观念在心里。这个应该蛮重要的。
2.关于斜杠语法:据我所知,斜杠语法是在FLASH 4.0中广泛使用的,也用于指示对象的路径,被用于代替点的作用,当他要指出一个变量是需要在变量前面加上冒号,以表示对变量的引用。由于软件都有一种向下兼容性,所以在MX中仍然可以使用(我没怎么用过2004,估计2004也支持的),但是一般说不使用,一方面,既然被取代了,肯定是因为有缺点,有好的方法了干吗还要抱者旧的不放(你要是怕被人说喜新厌旧,那你就继续用!我是不怕的,挖哈哈......)另一方面,为了和其他人保持一致,大家都用点语法,你一个人用斜杠,总觉得不大好!
编程时,我有在每句话结尾加分号的习惯,其实这个分号是可以省略的,那我为什么要加呢,嘿嘿........那是因为我一开始学习用FLASH编程时,没人告诉我可以不加,我就一直辛辛苦苦的加啊!!!现在改不过来了!挖哈哈..............
FLASH编程时,只有关键字区分大写和小写,何谓关键字,基本上就是你写对了,会变成兰色的那部分程序代码,也就是为本语言专用的一些单词!!比如:setProperty clearInterval getRGB 这些!
添加注释一般是为了方便别人阅读你的程序,添加注释符号//后,其后的内容为灰色;其实他还有一个最大的优点就是,方便你调试程序,比如,编译时发现程序有错,可是程序很长,你不能完全准确的确定错误发生的位置,那么你可以使用// 逐段的屏蔽掉程序段,进而帮助确定错误的位置。
--------------------------------------------------------------------------------
三.关于查错:
往往从有思路到编程实现效果不可能一次完成,也就是说,难免会出现错误,不能通过编译系统(不知道FLASH里怎么称呼,说成编译系统对不对咧,还请各位指教)。那这时候就需要我们查错。
1.充分利用输出窗口给出的提示:
例如:在按钮上加如下代码:duplicateMovieClip("MC","MC"+j,10+j);c=random(40);setProperty("MC"+j,_y,(c+30));setProperty"MC"+j,_x,random(600));setProperty("MC"+j,_alpha,(2*c+20));j++;if(j&700){j=1;}
ctrl+enter测试影片,输出窗口提示:
场景=场景 1, 图层=AS, 帧=2: 第 4 行: Unknown error ID #1033setProperty"MC"+j,_x,random(600));
就是说第四行有错误,回到编辑状态,一看,原来少了半边括号,就是说输出窗口会给我们提供很多必要的帮助,一定要好好利用!让AS编辑区显示行号的方法,如图四:
点一下红色圈中的按钮,选中显示行号即可!其他按钮还可以实现很多辅助功能,自己去看一看就知道了!
2.上述方法只能排除语法上的错误,也就是说,你程序本身算法或者程序中参数的传递,出现了问题,编译系统是不可能帮你检查出来的,这个只能靠你自己去检查。我这里介绍一点自己的方法,供大家参考:首先,你得自己心里想明白按照自己的这个算法思想能不能实现想要的结果,就是说先在心里把整个算法重新再理一遍,有时候想的不成熟,或者一开始的思路有疏漏,这时候应该可以更正或者修改过来!当你确定自己的程序设计思路没有问题但是依然出不了效果时,你就该考虑是程序实现时出了错误,比如参数传递有问题,路径指示不明确甚至错误等等都是比较常见的(至少我就常常犯这样的错误);
举个例子:
在主场景中有一个输入文本,其实例名为text 变量名为xx,然后主场景的帧上加:
_root.text.onChanged = function() {n=Number(xx);};//当文本框内容改变时就把文本框的值赋给n这个变量;
然后在主场景中一个风车状的MC上加:
onClipEvent(enterFrame){this._rotation=this._rotation+n;}//意思是让风车旋转,速度为n;
但是测试影片,就是没有效果,为什么呢,想想看,先把风车上的代码改为:onClipEvent(enterFrame){this._rotation=this._rotation+3;}//指定一个数值作为旋转的速度,测试发现,旋转正常;
这就提醒我们,是不是参数传递出了问题呢,哦!!!对,因为在帧上加的代码,所产生的变量n实际是主场景中的变量,把他传递到MC中时,应该确定起准确的位置。再次修改源代码,MC上的代码改为:onClipEvent(enterFrame){this._rotation=this._rotation+_root.n;}
再次测试,一切正常,旋转速度随着输入数字的变化而变化
3.学会使用trace语句,检测错误!
上面的例子中变量比较少,所以很容易发现问题,如果一个程序中有多个变量,而且比较复杂,那就需要分别对他们进行跟踪查看,方法就是利用trace语句,在某个变量每次发生变化后都用trace将其输出,以便查看其运算结果是否和预期的一致!
同样举个例子:随机抽签效果!
十个MC,透明度均为30;
主场景中的关键帧上加:a =new Array(0,1,2,3,4,5,6,7,8,9);//定义数组;mm=0;//点击次数统计;nn=10;//数组元素个数;
选择按钮上加:
on(press){i = random(nn);j =a1=a.slice(0,i);trace(a1);//输出抽取的部分数所组成的新的数组a1;a2=a.slice(i+1,nn);trace(a2);//输出抽取的另外一部分数所组成的新的数组a2;a=a1.concat(a2);trace(a);//输出组合后的数组,也就是新的数组a;setProperty("mc"+j,_alpha,getProperty("mc"+j,_alpha)+30);mm++;nn--;if(mm==10){text="抽签结束!"mm="10";_root.but._visible=
采用以上方法后,每点击一次按钮,窗口都输出三排数字,最后一排中比上一次输出少掉的那个数字就是被抽取的数字;这样一来,每运行一次代码,程序人员都可以方便的查看各个变量的运算情况!
源文地址:dispbbs.asp?boardID=1&ID=141361PS:
a1=a.slice(0,i);//截取数组a中从第0个到第i个元素组成新数组返回值赋值给数组a1a2=a.slice(i+1,nn);//截取数组a中从第i+1个到最后一个元素组成新数组返回值赋值给数组a2a=a1.concat(a2);//连接 a1和a2setProperty("mc"+j,_alpha,getProperty("mc"+j,_alpha)+30);//把被选中的对象透明度加30;_root.but._visible=//把按钮隐藏;
--------------------------------------------------------------------------------
FLASH隐藏类公布/使用
MM未公布的Tween/Easing类原教程译文及演示
FlashMX 2004 未公布的Tween/Easing 类
作者:Devon Wolfgang
I. Tween类
Flash现在支持一个很特别的新类"Tween"类,利用它可以使得很多MC运动效果变得简单.它的使用方法如下:someTweenID = new mx.transitions.Tween(object, property, function, begin, end, duration, useSeconds) 参数解释如下:object:一个您想要增加Tween动作的MC的实例名.property:该MC的一个属性,即为将要添加Tween动作的属性.function:easing类的一个方法(下面会提到).begin:属性开始时的数值.end:属性结束时的数值.duration:动作持续的帧数/时间.useSeconds:一个布尔值,决定是使用帧数计时(为false)还是秒数计时(为true).默认为false.
就这些了,下面我们来看看有哪些easing类中的方法可供使用.
II. Easing类
MX 2004支持16种不同的easing类方法(应该是19种,但是有4种是相同的).泛泛而谈,Easing类中有五大类方法,每一类又
分为3种,最后还有第六类(只提供一个方法,就是什么easing也没有).
具体地说,有以下六类:
StrongBackElasticRegularBounceNone
每类各有四种方法:
easeIneaseOuteaseInOuteaseNone
None和easeNone是相同的,所以我忽略掉它们. 关于该方法的完整调用应该如下:
mx.transitions.easing.Bounce.easeOut
现在您需要用以上字符串代替"function"占位符.
III.把两者结合起来
好了,现在我们掌握了所有的基本元素,接下来我们做一个完整的动画出来.设想一下我们现在制作了一个实例名为"
ball_mc"的小球,想到从x坐标为20的在方移动到x坐标为380的地方,用时0.5秒,并在最后弹两下.那么我们需要这样写:
ballTween = new mx.transitions.Tween(ball_mc, "_x", mx.transitions.easing.Bounce.easeOut, 20, 380, .5, true);
这串代码真难看! 我们最好把它写成一个函数:
function tweenBall() {easeType = mx.transitions.easing.Bounce.easeOvar begin = 20;var end = 380;var time = .5;var mc = ball_ballTween = new mx.transitions.Tween(mc, "_x", easeType, begin, end, time, true);}
这下看起来好多了.当然,我们还需要调用这个函数.下面我们做一个实例名为"myButton_btn"的按钮.然后在帧上加上如下的
代码:myButton_btn.onRelease = function() {tweenBall();//调用Tween};function tweenBall() {easeType = mx.transitions.easing.Bounce.easeOvar begin = 20;var end = 380;var time = .5;var mc = ball_ballTween = new mx.transitions.Tween(mc, "_x", easeType, begin, end, time, true);}
还不错,不过我们还可以改进一下,把easing类方法设为入口参数,这样我们就可以自定义所执行的运动方式了:myButton_btn.onRelease = function() {tweenBall(mx.transitions.easing.Bounce.easeOut);//注意入口的easing方法参数};function tweenBall(easeType) {//加了一个参数.var begin = 20;var end = 380;var time = 20;var mc = ball_ballTween = new mx.transitions.Tween(mc, "_x", easeType, begin, end, time);}
注意一点,time变量为20,我们把帧率调成25,然后去掉了最后一个boolean参数"useSeconds".这样运动就以帧为标准了.好了,
现在我们的代码看起来和先前的差不多,但是我们还要加15个差不多的按钮,用来向函数传递不同的参数.
所有按钮只是调用了一个函数,这下就有用多了.
IV.进一步研究
事实上,MM还为该类提供了几个事件和方法.我所找到的最有用的事件就是"onMotionFinished"事件,方法呢?有yoyo()和
rewind().举个例子,我们想让小球循环对称地运动,只需要这样稍微改一下:
myButton_btn.onRelease = function() {tweenBall(mx.transitions.easing.Bounce.easeOut);};function tweenBall(easeType) {var begin = 20;var end = 380;var time = 20;var mc = ball_ballTween = new mx.transitions.Tween(mc, "_x", easeType, begin, end, time);ballTween.onMotionFinished = function() {this.yoyo();};//多了一个事件和方法}rewind()方法把增加了Tween运动的MC重置到初始(未增加Tween前)状态.
好了,我知道我还有一些东西没有介绍.因为有些我发现没什么用,有些我根本还不知道怎么用!当然我很清楚了解清楚以
上几点就能够正确地使用Tween/Easing类了.
一点实际例子:
在收到不少Email后,我决定再多给几个例子.毕竟没有人只会想到移动小球.下面的例子会使您看到其用处的.
下面是代码:navText_array = new Array("Home", "About", "Work", "Play", "Contact");setUpButtons();stop();function setUpButtons() {var btnCnt = navText_array.for (i=0; i&btnC i++) {var temp = this["tab"+i+"_mc"];temp.navText.text = navText_temp.begin = temp._y;temp.end = temp._y-100;temp.time = 8;//为temp添加了三个属性temp.onRollOver = function() {easeUp(this);};temp.onRollOut = function() {easeDown(this);};}}function easeUp(what) {var tabUp = new mx.transitions.Tween(what, "_y", mx.transitions.easing.Bounce.easeOut, what.begin,
what.end, what.time);/*这里的what是为类型为MC的参数,调用what.begin等属性.从这里可以看出作者用的是AS1.0语法(如
他自己所说).*/}function easeDown(what) {var begin = what._y;var tabDown = new mx.transitions.Tween(what, "_y", mx.transitions.easing.Strong.easeIn, begin, what.
begin, what.time);}
译者按:要实现上面的效果,还要创建btnCnt个实例名为("tab"+i+"_mc")的菜单项.
--------------------------------------------------------------------------------
AS创建文本框
_root.createTextField("mytext", 1, 50, 50, 100,20);mytext.multilance=//设置单行;mytext.text="这是文本框"//文本赋值然后是删除这个创建的文本框:mytext.removeTextField();//删除!
如果大家要创建一个换行的文本框,就需要加上:mytext.wordWrap =true //指示文本字段自动换行mytext.autoSize=true //指定文本字段的自动对齐和大小调整
TextField 类的方法摘要
TextField.addListener() 注册一个对象,以便在调用 onChanged 和 onScroller 事件处理函数时接收通知。
TextField.getFontList() 返回播放器的主机系统上字体名称的数组。
TextField.getDepth() 返回文本字段的深度。
TextField.getNewTextFormat() 获取分配给新插入文本的默认文本格式。
TextField.getTextFormat() 返回包含文本字段中一些或全部文本的格式信息的 TextFormat对象。
TextField.removeListener() 删除侦听器对象。
TextField.removeTextField() 删除使用 MovieClip.createTextField() 创建的文本字段。
TextField.replaceSel() 替换当前的所选内容。
TextField.setNewTextFormat() 为由用户或方法插入的文本设置 TextFormat 对象。
TextField.setTextFormat() 为文本字段中指定范围内的文本设置一个 TextFormat 对象。
TextField 类的属性摘要
TextField._alpha 文本字段实例的透明度值。
TextField.autoSize 控制文本字段的自动对齐和大小调整。
TextField.background 指示文本字段是否具有背景填充。
TextField.backgroundColor 指示背景填充的颜色。
TextField.border 指示文本字段是否具有边框。
TextField.borderColor 指示边框的颜色。
TextField.bottomScroll 文本字段中最下面的可见行。只读。
TextField.embedFonts 指示文本字段是使用嵌入字体轮廓还是使用设备字体。
TextField._height 文本字段实例的高度,以像素为单位。它只影响文本字段的边框,不影响边框的粗细和文本字体大小。
TextField._highquality 指示 SWF 文件的呈现品质。
TextField.hscroll 指示文本字段的水平滚动值。
TextField.html 指示文本字段的当前最大滚动位置。
TextField.htmlText 包含文本字段内容的 HTML 表示形式。
TextField.length 文本字段中的字符数。只读。
TextField.maxChars 文本字段最多可容纳的字符数。
TextField.maxhscroll TextField.hscroll 的最大值。只读。
TextField.maxscroll TextField.scroll 的最大值。只读。
TextField.menu 将 ContextMenu 对象与文本字段关联。
TextField.mouseWheelEnabled 指示当鼠标指针停在文本字段上且用户滚动鼠标滚轮时,Flash Player 是否应自动滚动多行文本字段。
TextField.multiline 指示文本字段是否包含多行。
TextField._name 文本字段实例的实例名称。
TextField._parent 对此实例的父级实例的引用;其类型为 Button 或 MovieClip。
TextField.password 指示文本字段是否隐藏输入字符。
TextField._quality 指示 SWF 文件的呈现品质。
TextField.restrict 用户可输入文本字段的字符集。
TextField._rotation 文本字段实例的旋转度数。
TextField.scroll 指示文本字段的当前滚动位置。
TextField.selectable 指示文本字段是否可选。
TextField._soundbuftime 在声音进入流之前,必须预先缓冲的声音的时间量。
TextField.tabEnabled 指示影片剪辑是否包括在 Tab 键的自动排序中。
TextField.tabIndex 指示对象的 Tab 键顺序。
TextField._target 指定文本字段实例的目标路径。只读。
TextField.text 文本字段中的当前文本。
TextField.textColor 文本字段中当前文本的颜色。
TextField.textHeight 文本字段边框的高度。
TextField.textWidth 文本字段边框的宽度。
TextField.type 指示文本字段是输入文本字段还是动态文本字段。
TextField._url 创建文本字段实例的 SWF 文件的 URL。只读。
TextField.variable 与文本字段关联的变量名。
TextField._visible 确定文本字段实例是隐藏还是可见的布尔值。
TextField._width 文本字段实例的宽度,以像素为单位。它只影响文本字段的边框,不影响边框的粗细和文本字体大小。
TextField.wordWrap 指示文本字段是否自动换行。
TextField._x 文本字段实例的 x 坐标
TextField._xmouse 指针相对于文本字段实例的 x 坐标。只读。
TextField._xscale 指定水平缩放文本字段实例的百分比的值。
TextField._y 文本字段实例的 y 坐标。
TextField._ymouse 指针相对于文本字段实例的 y 坐标。只读。
TextField._yscale 指定垂直缩放文本字段实例的百分比的值。
TextField 类的事件处理函数摘要事件处理函数
TextField.onChanged在文本字段更改时调用。
TextField.onKillFocus在文本字段失去焦点时调用。
TextField.onScroller在文本字段滚动属性之一发生更改时调用。
TextField.onSetFocus在文本字段接收焦点时调用。
TextField 类的侦听器摘要
TextField.onChanged在文本字段更改时获得通知。
TextField.onScroller在文本字段的 scroll 或 maxscroll 属性更改时获得通知。
--------------------------------------------------------------------------------
attachSound的部分常用语句
aa=new Sound();//创建一个新音乐aa.attachSound("jgw");//将库中标识符为jgw的音乐导出播放(标识符在库中链接菜单中命名)aa.start(0,10000);//音乐播放秒偏移量为0,播放10000次aa.stop();//停止播放aa这个声音
如果你不想看到Flash的About和设置菜单,把下面的代码放到第一帧就行了:_root.createTextField("danger", 999, 0, 0, Stage.width, Stage.height);好了,现在换了一个新菜单.注:这个适合用在没有交互的动画上,如果你需要使用按钮就去掉.(这个好像是自Dengjie的Blog)
限制flash只能在服务器上观看在第一帧中加入如下代码:fscommand ("allowscale", "0"); url = "" target=&quo ... "; //这个换成你的域名if (_url.substring(0, 20)&&url) { //那个0(h),20(n)就是指从第一个字符开始向后数到第20个字符(包括“://”和“.”符号),这个请自行根据上面的url=后面的来更改gotoAndPlay (2); } else { gotoAndPlay (3); } 第二帧加入:stop (); 第三帧加入: stop (); 然后把正式内容放在第三帧就好了,第二帧放入出错内容当然有人说用播放就可以跳过,这里是给出一个思路,你可以用loadmove等等等等等等等等的方法来加载于否正式影片
用ShareObject在本地保存数据(下面文章将较详细讲解)
例(本地保存数据,要想远程保存数据,也可以,跟下边的例子差不多,只不过要安装 flashcom 需要$ 蛮贵的) function test(){ this.userinfo_so=SharedObject.getLocal("test/userinfo","/"); if(this.userinfo_ == null){ this.userinfo_=new Object(); this.userinfo_.username=new Array(); this.userinfo_.email=new Array(); } this.setUserinfo=setU this.getUserinfo=getU this.delUserinfo=delU } function setUserinfo (username,email) { with(this.userinfo_so.data){ uLength=info.username. eLength=info.email. info.username[uLength]= info.email[eLength]= } var status=this.userinfo_so.flush(); } function delUserinfo(){ this.userinfo_= this.userinfo_so.flush(); } function getUserinfo (){ for(var i=0;i&this.userinfo_.username.i++){ trace(i+":"+this.userinfo_.username); } } var gg_so=new test(); gg_so.setUserinfo("glghcool",""); gg_so.getUserinfo();
外部载入文本动态文本框必须放在MC里面system.useCodepage =loadVariables ("1.txt",mc)文本里的最前面是:动态文本框的变量名=你的内容易
判断用户名和密码是否正确,以及根据不同用户名进入不同帧数用户名的文本框为myname,密码框为mypasson (release) {if (myname == "用户名1" && mypass == "密码1") {gotoAndPlay (85);} else if (myname == "用户名2" && mypass != "密码2") {gotoAndPlay (82);} else if (myname != "用户名3" && mypass == "密码3") {gotoAndPlay (83);} else if (myname != "用户名4" && mypass != "密码4") {gotoAndPlay (84);}}
FLASH无手指按钮的制作
只需要在第一帧加上:buttonname.useHandCursor=0buttonname是你按钮的实例名(不是库里面的名字,属性面板里面的实例名)
FLASH实现设为首页、加入收藏、打开一个制定的新窗口设为首页: on (release) { getURL("javascrīpt :void(document.links[0].style.behavīor='url(#default#homepage)');void document.links[0].setHomePage('/&;#39;);", "_self", "POST"); }
加入收藏夹:
on (release) { getURL("javascrīpt :void window.external.AddFavorite('http://www.flash8.net&;#39;,'闪吧');", "_self", "POST"); }
在Flash中打开一个定制的浏览器新窗口
Get URL (" scrīpt:window.open("new.htm","newwin","width=320,height=320");")
Loading制作资料(Loading的制作都是使用这些AS,那些样子不同的Loading只是表现手法不一样,AS都是大同小异的,自己看看就明白了)建一个MC.做一个载入条动画为100祯.拖入主场景中命名实例名为Bar,在载入条下面用文字工具拖一个动态文本框,在右下角加入变量名Percent
第一祯加入祯标签loop,并打开动作面板,输入下面代码:
bt=int((_root.getBytesTotal())/1000);l=int((_root.getBytesLoaded())/1000);p=int((l/bt)*100);Percent=p+"%";//Percent为动态文本变量名.即显示百分比_root.Bar.gotoAndStop(p);//Bar为载入条的实例名
在第二祯加入
if(p==100){stopAllSounds();gotoAndPlay("main");}else{gotoAndPlay("loop");}
动画开始的那一祯加上祯标签main或者这里可以改为跳到下一个场景名或某一祯也可以loading 制作中的主要AS:x=Math.floor((_framesloaded/_totalframes)*100);//_framesloaded 表示已下栽的帧数_totalframes 总的帧数setProperty("_root.load",_xscale,x);// _xscale横向缩放百分比的值jindu="影片已下载"+_root.x+"%\n 请耐心等待";
第二帧:输入如下AS:if(x&100){gotoAndPlay(1);}else{ jindu=" 下载完毕!";}
用鼠标画线onMouseDown=function () {lineStyle(2,0*)lineTo(_xmouse,_ymouse)}
onMouseMove = function() {if (a) {lineStyle(2,0x);//指定线条的粗度为2,颜色为黑色,透明度为100;lineTo(_xmouse, _ymouse); //画线至鼠标所在位置;}updateAfterEvent(); //强制刷新;Flash 强制进行显示刷新工作。该语句不依赖于时间帧的触发。};onMouseDown = function() {a = //鼠标按下,给a变量赋值true,即执行上面的if后面括号内的语句,开始画线;moveTo(_xmouse, _ymouse);//重新定位开始点;};onMouseUp = function() {a = //鼠标松开,给a变量赋值false,不执行上面的if后面括号内的语句,停止画线;};
--------------------------------------------------------------------------------
Tween类写成的全代码弹性菜单
我并不打算详细说说这个菜单,全代码的,大家粘贴到主场景第一帧就可以了,这里只是说说重点.
我定义了两个函数,第一个是创建菜单选项,也就是方块和文字的,第二个创建运动的.我只是把末数量变成参数,这样在rollOver/rollOut时都可以用同一个函数.
最上面三个数组是关于菜单的定义的,包括颜色,文字和URL.
有个小小的技巧在这里面,就是用String(this._name).substr(-1,1) 来获得当前MC的序号,这样就可以把复制出来的MC定义转向到不同的URL.我的另一篇教程也有讲这个,不过说得太长了...(我是有点儿唐僧-___-#).
下面是代码:
mcColorArray = [0xF00000, 0xFF0000, 0xFFF000, 0x0FFF00, 0xFF0FF0, 0xF0FFF0];//定义菜单方块的颜色mcText = ["main", "news", "blog", "downloads", "about", "links"];//定义菜单文字urlArray=["#1","#2","#3","#4","#5","#6"];//定义菜单跳转到URLfunction createMc(mcName, mcX, mcY, mcDepths, mcColor, mcText) {_root.createEmptyMovieClip(mcName, mcDepths);with (eval(mcName)) {_x = mcX;_y = mcY;lineStyle(1, 0x);beginFill(mcColor, 100);moveTo(30, 30);lineTo(-30, 30);lineTo(-30, -30);lineTo(30, -30);lineTo(30, 30);endFill();//定里把菜单定义为正方形createTextField(mcText, 1, -30, -10, 60, 20);eval(mcText).text = mcTeval(mcText).type = "dynamic";var myTextFormat = new TextFormat();myTextFormat.align = "center";eval(mcText).setTextFormat(myTextFormat);}}//创建菜单选项function TweenMove(mcID, endData) {TweenWidth = new mx.transitions.Tween(eval(mcID), "_width", mx.transitions.easing.Elastic.easeOut, eval(mcID)._width, endData, 2, true);TweenHeight = new mx.transitions.Tween(eval(mcID), "_height", mx.transitions.easing.Elastic.easeOut, eval(mcID)._height, endData, 2, true);}//创建运动for (var i = 0; i&mcText. i++) {createMc("mcMenu"+i, 50+i*70, 50, i+1984, mcColorArray, mcText);//创建菜单eval("mcMenu"+i).onRollOver = function() {TweenMove(this, 80);};eval("mcMenu"+i).onRollOut = function() {TweenMove(this, 60);};eval("mcMenu"+i).onRelease=function(){var urlocation=String(this._name).substr(-1,1);getURL(urlArray[urlocation],"_blank");}//定义菜单方法.}
--------------------------------------------------------------------------------
Javascrīpt和Macromedia Flash的通信示例
原文地址: 说明: 略作修改,主要是一些很初级的操作; 又很多相似的文章,不过这个很权威
下面是一些在Flash和使用Javascrīpt的HTML文件直接通信的示例,每个示例都有简略的步骤
本文讨论了3种基本的Flash/Javascrīpt通信方式:Javascrīpt 到 Flash的通信----使用Flash播放器的javascrīpt方法Flash 到 Javascrīpt的通信----使用Flash的fscommandFlash 到 Flash的通信----------使用本地连接对象或综合上2种技术
并不是所有的浏览器都很重视脚本.为了和Flash播放器通信,浏览器必须有内置的钩子以便Flash播放器可以'监听'.浏览器必须是下列的几种:Netscape Navigator 3.0-4.7x, 和 Netscape 6.2或更高(Windows 95/98/NT/2000/XP 或 MacOS; 允许Java和LiveConnect)Internet Explorer 3.0 或更高(仅Windows 95/98/NT/2000/XP; 允许ActiveX)
注意:Macintosh上的Internet Explorer和早期版本的Netscape6不支持这种方法.请查看本文的附加信息
--------------------------------------------------------------------------------
Javascrīpt到Flash的通信
这个例子演示了如何使用Flash的method把变量从HTML的input text 发送到该页面中的Flash文件中.HTML input的数据通过Flash的SetVariable方法传送到Flash文件中.
查看示例:示例 下载源文件: javascrīpt_to_flash.zip(17k)(暂无)
Flash中1.新建一个文件,保存为javascrīpt_to_flash.fla2.用文字工具在舞台上创建一个文本域3.选择这个文本域,在属性面板中,从下拉列表中选择动态文本(Dynamic Text),在变量(variable)栏填上"myVar"注意:最好的习惯是使用Instance,用myVar.text更改myVar的值.为了简单起见和兼容Flash4和Flash5,我们使用的是变量名的形式.4.保存文件5.发布HTML文件和SWF文件
Dreamweaver中下一步的工作转移到Dreamweaver中了,当然也可以是其他的HTML编辑器1.打开上一步发布的HTML文件2.插入生成的SWF文件和OBJECT/EMBED标签(1) Insert&Media&Flash,并选择这个Flash(2) 切换到代码视图,我们需要修改被选中的&OBJECT&和&EMBED&标签(3) 在OBJECT标签中,插入id="myFlash"
&object classid="clsid:D27CDB6E-AE6D-11cf-96B8-"codebase="flash/swflash.cab#version=5,0,0,0"width=366 height=142 id="myFlash"&注意:如果你是粘贴复制代码的话,确保删除不必要的换行.否则可能会引起错误; id也可以在属性面板里直接输入(4) 在EMBED标签中,插入name="myFlash"和swLiveConnect="true",确保没有使用id属性!代码应当是这样子的:
&embed src="javascrīpt_to_flash.swf" quality=high width=366 height=142type="application/x-shockwave-flash" pluginspage="?P1_Prod_Version=ShockwaveFlash" name="myFlash" swLiveConnect="true"&&/embed&
3.创建表单域(1) 回到设计视图(2) 插入文本域(Insert& Form Object& Text Field),如果询问是否添加表单域,选择是(3) 把文本域的HTML标签修改成这样:
&input type="text" name="sendText" maxlength="45" ōnChange="doPassVar(this)"& 每当文本域内容发生变化时,onChange就被触发,doPassVar()函数就被调用
4.创建传递变量值的Javascrīpt函数复制下面的Javascrīpt到&head&&/head&标签内
&scrīpt LANGUAGE=Javascrīpt&&!--function doPassVar(args){var sendText = args.window.document.myFlash.SetVariable("myVar", sendText);}//--&&/scrīpt&5.保存文件,测试一下(F12)
--------------------------------------------------------------------------------
URL编码:怎样读取特殊字符 (这个我曾经谢过教程,这里整理过来)从外部文本载入到动态文本的时候,一些特殊字符(如&/%等)无法正常现实,有的符号还会导致这个符号后面的字符无法现实(如&),这时候我们就要将这些特殊字符进行URL编码,以下是各个特殊字符的URL对应编号:backspace %08 tab %09 linefeed %0A creturn %0D space %20 ! %21 " %22 # %23 $ %24 % %25 & %26 ' %27 ( %28 ) %29 * %2A + %2B , %2C - %2D . %2E / %2F 0 %30 1 %31 2 %32 3 %33 4 %34 5 %35 6 %36 7 %37 8 %38 9 %39 : %3A ; %3B & %3C = %3D

我要回帖

更多关于 cf战队名字大全 的文章

 

随机推荐