Flash脚本学习

鼠标对象

Mouse


给鼠标添加鼠标监听器,预先把监听器的方法都定义好,再给鼠标加上
someListener = new Object();
someListener.onMouseMove = function () { ... };
Mouse.addListener(someListener);

具体和Mouse类有关的方法查手册

Mouse.hide() Mouse.show()

鼠标坐标对象的引用

_root._xmouse
_root._ymouse


Loading制作

a=getBytesLoaded();
b=getBytesTotal();
loaded=int(a/b*100);
....

if(a==b)
{
nextScene();
}
else{
gotoAndPlay(1);
}


设对象参数常用命令

setProperty

setProperty("sn"+n, _x, random(800));
setProperty("sn"+n, _y, random(400));
scale1= random(50)+50;
setProperty("sn"+n, _alpha, scale1);
setProperty("sn"+n, _xscale, scale1);
setProperty("sn"+n, _yscale, scale1);

在一个对象上添加AS实现拖动等鼠标操作。(影片剪辑对象才行)

on (press) {
//点击此实例,开始拖动
this.startDrag(true);            //true小写,表示把对象锁在鼠标中央,不过有时会出现定位偏差,导致鼠标松了也不停,建议

不写算了
}
on (release) {
//释放鼠标,停止拖动
this.stopDrag();
}

也可以把鼠标代码添加到场景里,而不是对象

on (press) {
startDrag("my_mc");
}
on (release) {
stopdrag();
}

限定区域的拖拽

on (press) {
this.startDrag(true, 50, 100, 250, 200);//这里我们就使用刚才确定好的4个参数。4个点的参数就对拖动对象实现了一个矩

形区域的移动约束!
}
on (release) {
this.stopDrag();
}

onClipEvent (mouseMove) { //当鼠标移动,也就是这个b实例移动的时候,就执行里面的程序。
_root.draw();//执行舞台上定义过的draw()函数,开始在a与b之间绘制线条。
updateAfterEvent();//强制更新画面,是整个动画更加流畅。
}


在主场景中画线

function draw() { //自己定义一个函数,这个函数起名为draw(可自定),函数的功能是要实现以a实例的坐标为起点,向b实例绘

制线条。
_root.clear();//清除舞台上绘制的线条。
_root.lineStyle(1, 0x000000, 90);//设置线条的粗细,颜色和透明度。
_root.moveTo(a._x, a._y);//以a实例的坐标为起点开始绘制线条。
_root.lineTo(b._x, b._y);//以b实例的坐标为绘制线条的结束点。
}

碰撞的实现

命令格式:  目标影片剪辑的实例.hitTest(被拖拽的实例)  这个是比较简单的检测碰撞命令
         

         目标影片剪辑的实例.hitTest(被拖拽实例的X轴坐标,被拖拽实例的Y轴坐标,对象的矩形区域范围还是对象本

身范围)

碰撞的实质是通过检测被碰物体实现的。

部分雪花粘连代码

if (this.hitTest(merry2_mc)) {
stopOrNot = random(2);
if (stopOrNot == 1) {
//this._y += random(5);
this.moving = false;
delete this.onEnterFrame;
createSnow();


测鼠标速度的一种实现方法

今天有朋友问到关于如何计算鼠标的移动速度问题,想了一下,有一个比较方便的方法可以实现,原理也比较容易理解,以前还真没

想到,觉得不错就发上来和大家共享,希望对大家有帮助......
  说一下大体制作步骤:
  新建文件以后,创建一动态文本,变量名字为speed;
新建一个图层,并插入一个关键桢,用于写代码;

  在第一桢写:


  
x1=_root._xmouse
  y1=_root._ymouse//取得鼠标在第一桢的坐标;

  在第二桢写:


  x2=_root._xmouse
  y2=_root._ymouse//取得鼠标在第二桢的坐标;

  length=Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));

//这一句是关键,利用距离公式求出鼠标在两桢之间的距离差;
  time = 1/12*2;//求出播放两桢需要的时间,注意这里桢频为12fps;
  sudu = length/time;//利用速度公式求出速度;
  sudu = Math.round(sudu*100)/100;//将求出的速度去两位小数
  speed=x;//将求得的速度附给动态文本框

  最后,测试结果,基本上能测得鼠标移动的速度

响应键盘的方法


在敲击键盘上的X键时输出窗口中将提示:X is pressed
在按钮上加上:

on (keyPress "x") {
trace("X is pressed");
}

如要检测键盘上的键,可以使用下面的ActionScript:

on (keyPress "") {
trace("Left is pressed");
}

使用方法很多种
onClipEvent (enterFrame) {
    如果敲击左方向键,实例"mc"左移15px
    if (Key.isDown(Key.LEFT)) _x -= 15;
    不让实例"mc"跑到按钮区里
    if (_x<=100) _x = 100;
    如果敲击右方向键,实例"mc"右移15px
    if (Key.isDown(Key.RIGHT)) _x += 15;
          }         
另外,你可以在一个按钮中加入若干个on函数,也可以在一个on函数中结合多种事件,这使 您可以为按钮定义自己熟悉常用的快捷键

,如下所示:

on (release, keyPress "") {
_root.myMC.prevFrame();
}
on (release, keyPress "") {
_root.myMC.nextFrame();
}

祯处理操作

stop()、play()、gotoandplay()、gotoandstop()、nextFrame()、prevFrame();、nextScene()、prevScene();、stopAllSounds();


利用URL打开网页的操作

on(release){
getURL("http://bbs.graphicvale.com/","_blank")
}


有关时间的操作

getFullYear()   按照本地时间返回 4 位数字的年份数。
  getMonth()    按照本地时间返回月份数。
  getDate()    按照本地时间返回某天是当月的第几天。
  getHours()   按照本地时间返回小时值。
  getMinutes()    按照本地时间返回分钟值。
  getSeconds()   按照本地时间返回秒数。


部分时钟制作片断

_root.onEnterFrame = function() {//需要让影片不停执行下面脚本。
mydate = new Date();//首先构建一个名字叫mydate的日期对象,因为以后我们就要用mydate这个实例来控制了。
myear = mydate.getFullYear();//获取本地机器上的年份,并放在myear变量中。
mmon = mydate.getMonth()+1;//获取本地机器上的月份,并放在mmon变量中。因为获取的值是0 代表一月,1 代表二月,依此类推,

所以要加上1才正确
mdate = mydate.getDate();//获取本地机器上的本月的第几天,并放在mdate变量中。
mou = mydate.getHours();//获取本地机器上的小时数值,放在mou变量中,这个命令能获取0--23之间的数值。
mm = mydate.getMinutes();//获取本地机器上的分钟数值,并放在mm变量中。
ms = mydate.getSeconds();//获取本地机器上的秒数值,放在ms变量中。
mytime = myear+"年"+mmon+"月"+mdate+"日 "+mou+":"+mm+":"+ms; //让舞台上变量名为mytime的动态文本框显示日期及时间。
}

sec._rotation = 6*ms;//利用flash中对象旋转命令来实现指针的走动。_rotation旋转一周是360度,所以,秒针每走一下,就等于

走了6度,所以用一个算法来获取每秒的度数6*ms
min._rotation = 6*mm;//同理,让分针也是根据获取的分钟数值乘以6来进行度的旋转。
hour._rotation = mou*30+mm/60*30;//

注意要把旋转点调整到指针的根部。


添加元件

attachMovie(idName, newName, depth)

添加空影片

my_mc.createEmptyMovieClip(instanceName, depth)

该方法的行为类似于 attachMovie() 方法,但是不必为新的影片剪辑提供外部链接名称。新创建的空影片剪辑的注册点为左上角。如

果缺少任意一个参数,则该方法将失败。


影片复制

myMovieClip.duplicateMovieClip(newName, depth)


鼠标隐藏

Mouse.hide() Mouse.show()

对象的隐藏

_root.dfdf._visible=false;

Math.abs()
计算绝对值。

Math.acos()
计算反余弦值。

Math.asin()
计算反正弦值。

对象速度的控制

enemy._x += enemy_obj.speedX;
enemy._y += enemy_obj.speedY;

无非是用加的方法是物体位置改变

Math.atan()
计算反正切值。

Math.atan2()
计算从 x 坐标轴到点的角度。

Math.ceil()
将数字向上舍入为最接近的整数。

Math.cos()
计算余弦值。

Math.exp()
计算指数值。

Math.floor()
将数字向下舍入为最接近的整数。

Math.log()
计算自然对数。

Math.max()
返回两个整数中较大的一个。

Math.min()
返回两个整数中较小的一个。

Math.pow()
计算 x 的 y 次方。

Math.random()
返回一个 0.0 与 1.0 之间的伪随机数。

Math.round()
四舍五入为最接近的整数。

Math.sin()
计算正弦值。

Math.sqrt()
计算平方根。

Math.tan()
计算正切值。

Math 类的属性概要
Math 类的所有属性都是常数。

属性
说明

Math.E
欧拉 (Euler) 常数,自然对数的底(大约为 2.718)。

Math.LN2
2 的自然对数(大约为 0.693)。

Math.LOG2E
e 的以 2 为底的对数(大约为 1.442)。

Math.LN2
10 的自然对数(大约为 2.302)。

Math.LOG10E
e 的以 10 为底的对数(大约为 0.434)。

Math.PI
一个圆的周长与其直径的比值(大约为 3.14159)。

Math.SQRT1_2
1/2 的平方根的倒数(大约为 0.707)。

Math.SQRT2
2 的平方根(大约为 1.414)。

使用FLASHMX2004载入HTML页面

方法如下:

1.在场景中建立一动态文本框命名为textbox.并设置使用HTML格式.

2.在主帧上加入如下代码:

loadhtml=new LoadVars();
loadhtml.onData=function(newdata){
test.htmlText=newdata;
}
loadhtml.load("file1.html");

3.其中FILE1.HTML是您的网页. 所要注意的是把你的网页代码另存成UNICODE格式这样中文才可以显示.

这种方有些类似我上次的教程CSS样式表只是对象不同而已.






文章来自:http://hi.baidu.com/qjj10307352/blog/item/d1cee60f79b66dee37d12232.html

加支付宝好友偷能量挖...


评论(0)网络
阅读(79)喜欢(1)HTML/CSS兼容/XML