文本 1、按钮清空文本框内容: 方法一: 按钮代码: on (press) { Aa = ""; Ab = ""; Ac = ""; Ad = ""; } 文本框实例名:Aa、Ab、Ac、Ad。 方法二: _root.text="" On(Release) Set Variable:"input" = "" Set Variable:"output" = "" End On 2、按钮判断文本框内容: 按钮代码: on (press) { if (a == "*" ) { gotoAndStop(2);
} else if (a== "zsy") { gotoAndStop(3); } } 文本框变量:a。 如果文本框输入其他内容,跳转到第2帧。 如果文本框输入:zsy,跳转到第3帧。 3、判断用户名和密码是否正确,以及根据不同用户名进入不同帧数 用户名的文本框为myname,密码框为mypass on (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); } } 4、外部载入文本 动态文本框必须放在MC里面 system.useCodepage = true; loadVariables ("1.txt",mc) 文本里的最前面是:动态文本框的变量名=你的内容 5、创建文本框 _root.createTextField("mytext", 1, 50, 50, 100,20); mytext.multilance=false;//设置单行; mytext.text="这是文本框"//文本赋值 然后是删除这个创建的文本框: mytext.removeTextField();//删除! 如果大家要创建一个换行的文本框,就需要加上: mytext.wordWrap =true //指示文本字段自动换行 mytext.autoSize=true //指定文本字段的自动对齐和大小调整 6、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 对象。 7、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 指示当鼠标指针停在文本字段上且用户滚动鼠标滚轮时,FlashPlayer 是否应自动滚动多行文本字段。 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 指定垂直缩放文本字段实例的百分比的值。 8、TextField 类的事件处理函数摘要 TextField.onChanged 在文本字段更改时调用。 TextField.onKillFocus 在文本字段失去焦点时调用。 TextField.onScroller 在文本字段滚动属性之一发生更改时调用。 TextField.onSetFocus 在文本字段接收焦点时调用。 TextField 类的侦听器摘要 TextField.onChanged 在文本字段更改时获得通知。 TextField.onScroller 在文本字段的 scroll 或 maxscroll 属性更改时获得通知。 9、动态文本变量: Flash8用法: b.text= Number(a.text)+1; a,b为实例名称 低版本用法: b=Number(a)+1;a,b为变量名称 10、随机数用法:int(Math.random()*1000%30)+1; 11、if语句用法: on (release) { if(a.text=="abc") bb="right"; else bb="false"; gotoandplay(2); } 12、计时器的制作
单击菜单Insert/new symbol,在弹出的对话框中输入插入的符号名称(如:计时器),确 定后选择文字工具,属性为动态(Dynamic text),在第一帧中画两个文本框。分别设置变 量名为munite和timer,在两个文本框之间画一个形如冒号的圆点(这两个圆点可以做成一个 符号,类型为电影片段,每秒闪动一次.然后拖入到两文本框之间。在第二帧插入帧。在 第一帧输入动作脚本(Action)如下: //设置时间的初值 if(!started) { start_time=getTimer(); started=true; timer=0; i=o; munite=0; } x=getTimer()-start_time;//计算时间的变化 x=int(x/1000); //时间的单位为1000分之一秒 y=x-60*i if (y>59) {i=i+1;munite=munite+1 timer=timer+1: } else {timer=y} 该符号制作完毕后。将其拖入主场景中即可。 13、智能判断速择题,并作正误提示 单击菜单Insert/new symbo1,在弹出的对话框中输入插入的符名称。如:“对错提示”。 符号类型为“电影片段”。在第一帧输入文本“在括号内输入答案,按enrer键确定“ 在 该帧上输入动作脚本: _root.flah=false;_root.ans="";gotoAndStop(1);在第16帧插入空关键帧。在该帧上 画一个形如“x”的图或输入文本“x”,在第30帧插入关键帧,帧AAction为_root.ans=" ":gotoAndStop(31);在第31帧插人空白关键帧,在该帧上输人静态文本“请重作,按e nter键确定。“在该帧输入脚本:“stop();”至此,该符号制作主或:例如: 第1题:1十1十( ) A.2 B.3 C.4 D.0 在上例括号位置插入动态文本框,不输入任何内容。该文本框变量名为:ans。在该帧适当 位置插入电影“对错提示”,该电影片断名属性为“ql”,在该电影片断上输人脚本: //键盘事件控制程序 onClipEvent(keyDown) } //取得按键的键值 keycode=Key.getCode(); //判断是否为Enter键 if(keycode==Key.ENTER) { //判断输入的答案是否正确 //answer=Number(A) if(_root,ans=="A" or _root.ans=="a"{ //显示“答对了”信息 tellTsrget(_root.q1) { gotoAndPlay(2); } } else { //显示“答错了”信息 tellTarget(_root.q1) { gotoAndplay(16) } } } } 14、关于随机数的技巧 用来产生 6--20 之间的 5 个不重复的随机数 1): 首先产生一个随机数 , 放在数组对象中的第一个位置 2): 产生一个新的随机数 3): 检查新产生的随机数和所有目前已产生的随机数是否相同 , 若是相同则返回 (2), 否则返回 (4) 4): 将新的随机数加入数组对象中下一个数组元素内 5): 检查数组对象个数是否已达到 5 个 , 若是跳到 (6), 否则返回 (2) 6): 结束 AS 如下 : data1=newArray(5); tot=1; data1=[tot-1]=random(20-6+1)+6; do{ gen_data=random(20-6+1)+6; reapeat_data=0; for(i=0,i<=tot-1;i++){ if(gen_data==data reapeat_data=1; break; } } if(reapeat_data==0){ tot++ data[tot-1]=reapeat_data; } }while(tot<5); trace(data1); 15、鼠标指向显示填空题答案 显示一些问题的答案,可以将这一答案制成—个按钮,在这一按钮的Up帧可以为空白关键 帧,其它帧为答案内容。在问题的答案处插入该按钮,在该帧输入脚本: on(release) { gotoAndStop;//第i帧将答案固定显示在屏幕上 16、如何定义二维数组? 答:下面定义一个20*20的二维数组,值全部为0 sarray = []; for (var i = 0; i<=19; i++) sarray[ i] = []; for (var j = 0; j<=19; j++) { sarray[ i][j] = 0; {} } 17、显示当前时间: 插入一个动态文本框,其变量:K. 帧动作: myDate = new Date(); seconds = myDate.getSeconds(); minutes = myDate.getMinutes(); hours = myDate.getHours(); if (hours<10) { hours = "0"+hours; } if (minutes<10) { minutes = "0"+minutes; } if (seconds<10) { seconds = "0"+seconds; } K = hours+":"+minutes+":"+seconds; 插入两帧才能刷新时间。 18、倒计时 首先新建文件以后,在主场景中分别用文字工具建立三个动态文本框,变量名字分别是:leftmin,leftsec,leftmilli, 也就是分别来显示计时的分钟、秒数和毫秒数。 然后新建一层,在第一桢写上如下代码即可:(已经做了详细解释,相信大部分朋友能够理解这些代码的意思) onLoad = function(){// 当场景加载以后执行 totalmin = 40; totalsec = 60; totalmilli = 100; // 初始化一些变量,在后面的计算中要用到这些变量 } onEnterFrame = function(){// 逐桢执行动作" currentsec = Math.round(getTimer()/1000); // 求出当前影片已经播放的秒数(取整) currentmilli = Math.round(getTimer()/10); // 求出当前影片已经播放的毫秒数(取整) leftsec = totalsec- currentsec;~ // 剩余的秒数等于总的秒数减去已经播放的秒数 leftmin = totalmin; ^ // 开始分钟数等于总的分钟数,开始是不变的 leftmilli = totalmilli - currentmilli; // 剩余的毫秒数等于总的毫秒数减去已经播放的毫秒数 if(leftsec<10){leftsec = "0"+leftsec} if(leftmin<10){leftmin = "0"+leftmin} if(leftmilli<10){leftmilli = "0"+leftmilli} // 以上三句是当分钟数、秒数、毫秒数小于 10 的时候,前面加上一个 “0” 。 if(leftmilli<=1){totalmilli+=100;} ); // 当计时剩下的毫秒小于 1 的时候,总秒数再加 100,以便下一次重新计时(这里注意得到的影片播放的毫秒数是一直增加的) if(leftsec == 0){// 当剩余的秒数等于 0 的时候 totalsec+=60;// 类似上面的解释,总秒数加 60 totalmin-=1;// 这时候相当于过了 60 秒,所以分钟数要减 1 if(leftmin ==0){// 当分钟数等于 0 的时候,计时结束 leftsec = "00"; , leftmin = "00"; leftmilli = "00"; // 将三个计时框都附值为 0 delete onEnterFrame;// 删除这个逐桢动作,以节省资源 }; } } 19、随机生成一个有 30 个数字的数组,这 30 个数字随机在 1~500 之间取,且不能重复,而且要乱序的。 tmp = new Array(); k = new Array(); for (i=0; i<=499; i++) { tmp = i+1; } for (i=0; i<=29; i++) { k = tmp.splice(random(tmp.length-1), 1); } trace(k);
20、数组的用法: var s=new Array(4); s[0]=8 s[1]=4 s[2]=7 s[3]=9 for(i=0;i<s.length;i++) a.text=a.text+ s[i]+"," flash动作代码大全(六)---实例相关:下雨、下雪、点播、画笔等2010-04-14 13:08FLASH实例动作脚本代码集锦 1、下雨: 新键一个影片剪辑。在里面作出来一滴雨落下得效果。然后设置他的实例名称为“CC”然后返回到场景1。在之后就是从库里面把那个影片剪辑托到舞台上。在之后在第2。3贞上面插入关键贞。在第一贞动作里面写上 var i; i=1; 在第2贞上面写上 duplicateMovieClip("CC","CC"+i,i); m=this["CC"+i];m._x=random(550); m._y=random(450); i=i+1; if(i==50){i=10} 第3贞上面写上 gotoAndPlay(2);
2、下雪 将雪花拖入到主场景中,放置于舞台外,并封装为snow_mc, 在第一帧as编辑区里加入下面的AS语句: stop(); var i; //产生60个小雪花 for (i=1; i<60; i++) { //产生新的雪花剪辑元件 snow_mc.duplicateMovieClip("snow"+i+"_mc", i); //新的雪花的X,Y坐标 eval_r("snow"+i+"_mc")._x = random(800); eval_r("snow"+i+"_mc")._y = random(560); //新的雪花的形变 scale = random(60)+50; //不同的透明度,产生层次感 eval_r("snow"+i+"_mc")._alpha = scale; //不同的大小,产生层次感 eval_r("snow"+i+"_mc")._xscale = scale; eval_r("snow"+i+"_mc")._yscale = scale; //加入控制雪花的AS语句 snow(eval_r("snow"+i+"_mc")); } //这个函数是用来产生一个新的雪花 function createSnow() { //深度递加 i++; //产生实例 snow_mc.duplicateMovieClip("snow"+i+"_mc", i); eval_r("snow"+i+"_mc")._x = random(800); eval_r("snow"+i+"_mc")._y = random(560); scale = random(60)+50; eval_r("snow"+i+"_mc")._alpha = scale; eval_r("snow"+i+"_mc")._xscale = scale; eval_r("snow"+i+"_mc")._yscale = scale; snow(eval_r("snow"+i+"_mc")); } //加入控制雪花的AS语句的函数 function snow(snow_mc) { snow_mc.onLoad = function() { //舞台大小 stage_x = 800; stage_y = 560; //用来判断是否降落 this.moving = true; //风向和风力 windx = (_xmouse-stage_x/2)/100; }; //风向和风力随鼠标的移动而改变 snow_mc.onMouseMove = function() { windx = (_xmouse-stage_x/2)/100; updateAfterEvent(); }; snow_mc.onEnterFrame = function() { //判断moving if (this.moving) { //随机数用来产生摇摆效果 s = random(2); //雪花下落 this._y += 10; if (s == 0) { this._x += 5; } else if (s == 1) { this._x -= 5; } //加上风力 this._x += windx; //超出舞台就初始化 if (this._y>stage_y || this._x<0){ this._y = 0; this._x = random(stage_x); } //产生旋转效果 this._rotation = random(180); } } } 3、点播: 在场景中添加输入文本框,使变量名为x。 设置四个影片剪辑,实例名分别为:a、b、c、d。 帧-动作: function play(name) {tellTarget(name) {gotoAndPlay(2); }} 在场景中添加按钮,按钮-动作: on (release) {name=x; this.play(name); } 发布后,在文本框中输入实例名,按按钮就播放对应的影片剪辑。
4、画笔: 画笔一:帧-动作: this.createEmptyMovieClip("canvas_mc", 999); var isDrawing:Boolean = false; // clear_btn.onRelease = function() { canvas_mc.clear(); }; // var mouseListener:Object = new Object(); mouseListener.onMouseDown = function() { canvas_mc.lineStyle(5, 0xFF0000, 100); canvas_mc.moveTo(_xmouse, _ymouse); isDrawing = true; }; mouseListener.onMouseMove = function() { if (isDrawing) { canvas_mc.lineTo(_xmouse, _ymouse); updateAfterEvent(); } }; mouseListener.onMouseUp = function() { isDrawing = false; }; Mouse.addListener(mouseListener); 建一个清除按钮,实例名:clear_btn。 —————————————————————————————————————————————— 画笔二: 帧-动作: var empiremue = new ContextMenu(); //删除原始菜单状态! empiremue.hideBuiltInItems(); //自定义菜单项目! empiremue.customItems.push(new ContextMenuItem("鼠标写字", h1)); empiremue.customItems.push(new ContextMenuItem("清除字迹", h2)); empiremue.customItems.push(new ContextMenuItem("退出程序",h3,true)); empiremue.customItems.push(new ContextMenuItem("退出写字", h4)); function h3() { fscommand("quit"); } function h4() { Mouse.show();//显示鼠标 _root.clear(); //_root.pen=false; _root.onMouseMove=function(){ updateAfterEvent(); pen._x = _root._xmouse+1200; pen._y = _root._ymouse+800; }} function h1() { stop(); //_root.mc._visible=false;//影片不可见 var xx=Math.random()*0xFFFFFF; //Mouse.show();//显示鼠标 _root.createEmptyMovieClip("pen", 1); pen.lineStyle(4, 0x0082FF); pen._x = 200; pen._y = 200; //浅兰色笔体 pen.beginFill(0x0082FF, 100); pen.lineTo(20, -8); pen.lineTo(65, -8); pen.lineTo(65, 8); pen.lineTo(20, 8); pen.lineTo(20, -8); pen.beginFill(0x0082FF, 100); endFill(pen); pen.beginFill(xx, 100); pen.lineStyle(4, xx) pen.lineTo(0, 0); pen.lineTo(20, 8); pen.lineTo(20, -8);
endFill(pen); pen._rotation = -50; Mouse.hide(); //定义onMouseDown函数 //Math.random()*0xFFFFFF用代替可使每笔的颜色不同 _root.onMouseDown=function(){ //设定线条样式 _root.lineStyle(4,xx,100); //绘制直线; _root.moveTo(_root._xmouse,_root._ymouse); //定义变量isdrawing,并赋值为真 isdrawing=true; } _root.onMouseMove=function(){ updateAfterEvent(); pen._x = _root._xmouse; pen._y = _root._ymouse; //如果变量为真 if(isdrawing==true){ //绘制直线断 _root.lineTo(_root._xmouse,_root._ymouse); //刷新画面; updateAfterEvent(); } } _root.onMouseUp=function(){ //设定变量isdrawing的值为假 isdrawing=false; } } function h2() { Mouse.hide(); _root.clear(); } _root.menu = empiremue; 画笔三:用鼠标画线 onMouseDown=function () { lineStyle(2,0*000000,100) lineTo(_xmouse,_ymouse) } onMouseMove = function() { if (a) { lineStyle(2,0x000000,100);//指定线条的粗度为2,颜色为黑色,透明度为100; lineTo(_xmouse, _ymouse); //画线至鼠标所在位置; } updateAfterEvent(); //强制刷新;Flash 强制进行显示刷新工作。该语句不依赖于时间帧的触发。 }; onMouseDown = function() { a = true; //鼠标按下,给a变量赋值true,即执行上面的if后面括号内的语句,开始画线; moveTo(_xmouse, _ymouse);//重新定位开始点; }; onMouseUp = function() { a = false; //鼠标松开,给a变量赋值false,不执行上面的if后面括号内的语句,停止画线; }; 画笔四: *两点间画直线 *画螺旋线 *画正方形、圆、椭圆 *抛物线 *正弦、余弦线 使用方法:加到帧中就可 // 画直线 // / 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; // 顶点坐标 } 5、鼠标跟随时钟: 建一个实例名为ttmove的影片剪辑,其中有一个动态文本框(实例名:textclock)和一个背景层。把该影片剪辑放到一帧中。帧的动作代码: _root.onEnterFrame = function() { //startDrag(this.ttmove, true); ttmove._x += (_xmouse-ttmove._x)/5; ttmove._y += (_ymouse-ttmove._y)/5; //ttmove._x += _xmouse-ttmove._x; //ttmove._y += _ymouse-ttmove._y; myDate = new Date(); var seconds = myDate.getSeconds(); var minutes = myDate.getMinutes(); var hours = myDate.getHours(); var years = myDate.getFullYear(); var months = myDate.getMonth()+1; var dates = myDate.getDate(); //if (hours<12) { //ampm = "AM"; //} //else{ //ampm = "PM"; //} //while(hours >12){ //hours = hours - 12; //} if (hours<10) { hours = "0"+hours; } if (minutes<10) { minutes = "0"+minutes; } if (seconds<10) { seconds = "0"+seconds; } if (months<10) { months = "0"+months; } if (dates<10) { dates = "0"+dates; } myclock.hourHand._rotation =myDate.getHours()*30+myDate.getMinutes()/2; //hourhand2._rotation = myDate.getHours() * 15 +myDate.getMinutes() / 4; myclock.minuteHand._rotation =myDate.getMinutes()*6+myDate.getSeconds()/10; myclock.secondHand._rotation = myDate.getSeconds()*6; //monthhand._rotation=myDate.getDate()*12; //weekhand._rotation=myDate.getDay()*51; //now = new Date(); dagen = new Array("星期天", "星期一", "星期二", "星期三", "星期四", "星期五","星期六");
day = dagen[myDate.getDay()]; ttmove.textclock.text = years+"-"+months+"-"+dates+" "+day+""+hours+":"+minutes+":"+seconds;
}; stop(); var bgcolorp = Math.round(Math.random()*13); _root.bgcolor.gotoAndStop(bgcolorp); var mouseListener:Object = new Object(); mouseListener.onMouseWheel = function(delta:Number) { trace(delta);
myclock._xscale += delta*3; myclock._yscale = myclock._xscale; if (myclock._yscale<=0) { mycloce._yscale = 1; } if (myclock._xscale<=0) { myclock._xscale = 1; } }; Mouse.addListener(mouseListener); 6、影片剪辑跟随鼠标自动缩放: 建两个影片剪辑,实例名分别是:1、3。 建两个帧,第一帧-动作: setProperty("1", _x, _root._xmouse / 2); setProperty("1", _y, _root._ymouse / 2); setProperty("1", _xscale, Number(_xmouse) /550 * 100); setProperty("1", _yscale, Number(_ymouse) / 200 * 100); setProperty("3", _x, _xmouse / 2); setProperty("3", _y, _ymouse + (400 - _ymouse) / 2); setProperty("3", _xscale, _xmouse / 550 * 100); setProperty("3", _yscale, (400 - _ymouse) /200 * 100); 第二帧-动作:gotoAndPlay(1); 7、影片剪辑跟着鼠标转动:建一个影片剪辑,影片剪辑动作: //This one chould be pretty self explanatory. //Basically it uses basic trigonometry to figure out theangle //at which the clip should be rotated //Questions? patrickmineault@sympatico.ca onClipEvent(load){ X = this._x; Y = this._y; } onClipEvent(mouseMove){ Xm = _root._xmouse; Ym = _root._ymouse; Xdiff = Xm - X; Ydiff = -(Ym - Y); radAngle = Math.atan(Ydiff/Xdiff); if (Xdiff < 0){ corrFactor = 270; } else{ corrFactor = 90; } this._rotation = -radAngle*360/(2*Math.PI) + corrFactor; updateAfterEvent(); } 8、鼠标拖拽与旋转在网上看到某个游戏既要拖拽mc又要旋转mc,拖拽用鼠标事件实现,而旋转需要用shift+鼠标click事件。总觉得太麻烦了。故而希望自己能找到一种只用鼠标就能同时实现拖拽与旋转功能的方法。 结果发现MOUSE_DOWN+MOUSE_UP竟然相当于一次CLICK事件。即每次释放鼠标左键,停止拖拽时,mc会旋转一次,而这个显然不是预期的效果。 于是,开始明白了,那个程序员为什么要添加shift键的侦听了。 可是,不用shift键就不能实现这种功能吗?我开始考虑如何区分MOUSE_DOWN+MOUSE_UP与CLICK.。 方法一:设置时间间隔。时间不太好把握,pass掉。 方法二:用鼠标的相对位置。倘若mc未移动则视为click事件。正解! package{ import flash.display .*; import flash.geom .Point; import flash.events.*; public class main extends Sprite{ private var mc:MC; private var clickOffset:Point; private var mouseLoc:Point; public function main(){ mc=new MC(); addChild(mc); mc.x=200; mc.y=200; mc.addEventListener(MouseEvent.CLICK ,rot); mc.addEventListener(MouseEvent.MOUSE_DOWN,startdrag); mc.addEventListener(Event.ENTER_FRAME. ,drag); stage.addEventListener(MouseEvent.MOUSE_UP,stopdrag); } private function startdrag(e:MouseEvent ){ mouseLoc=new Point(e.stageX,e.stageY); clickOffset=new Point(e.stageX-mc.x,e.stageY-mc.y); } private function drag(e:Event){ if(clickOffset==null) return; mc.x=mouseX-clickOffset.x; mc.y=mouseY-clickOffset.y; } private function stopdrag(e:MouseEvent ){ clickOffset=null; } private function rot(e:MouseEvent){ if(!mouseLoc.equals(new Point(e.stageX,e.stageY)))return; mc.rotation+=30; } } } |
|