问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

有关胶片的FLASH教程

发布网友 发布时间:2023-09-18 09:37

我来回答

2个回答

热心网友 时间:2023-09-28 11:11

胶卷动画如1楼说的,我主要说鼠标跟随

鼠标跟随代码物体对鼠标的跟随可以采用在帧上添加as语句starDrag的方法来实现。
但是采用这种方法所实现的跟随过程太生硬,跟得实在是紧,也就是当鼠标移动到别的位置,物体也很快的移动了过来,假如要让物体慢慢(速度可以控制)的靠近鼠标,使用starDrag这条语句就不能做到。

慢慢靠近的效果:

starDrag语句的功能其实是和下面的代码相同的。

onClipEvent (enterFrame) { xTarget = _root._xmouse; yTarget = _root._ymouse; _x = xTarget; _y = yTarget;}

这几行代码是添加在物体(影片剪辑)上面的。

其中,语句 _x = xTarget 和 _y = yTarget的作用是使物体的坐标定位到(xTarget,yTarget)上,
而(xTarget,yTarget)就是鼠标的当前坐标。

修改这几行代码,就可以使物体在鼠标移动后,慢慢的靠近鼠标。

_x = xTarget 等价于 _x = xTarget + _x - _x(加一个减一个)
即:_x =_x + (xTarget - _x)
其中的(xTarget - _x)是物体的目标位置与当前位置的坐标差

如果让(xTarget - _x)乘上一个小于1的系数,那么物体就不会突然移动到坐标(xTarget,yTarget)上,
而是慢慢的靠过去。

于是,修改后的代码如下:

onClipEvent (enterFrame) { xTarget = _root._xmouse; yTarget = _root._ymouse; fraction=0.5; _x = _x + (xTarget-_x)*fraction; _y = _y + (yTarget-_y)*fraction; }
实现了慢慢靠近

对“慢慢靠近”的加以利用:一个跟一个

场景上放置一个影片剪辑,instance name命名为darg0

在帧上添加代码:

copies = 5;for (var i = 1; i<=copies; i++) { plicateMovieClip ("drag0", "drag"+i, i); eval("drag"+i).num = i;}
上面的代码复制了5个,drag1~drag5,连同drag0,场景上共6个
其中,还给drag1~drag5定义了内部变量drag1.num~drag5.num

在场景上的drag0上面添加代码:

onClipEvent (enterFrame) { if (num) { xTarget = eval("_root.drag"+(num-1))._x; yTarget = eval("_root.drag"+(num-1))._y; } else { xTarget = _root._xmouse; yTarget = _root._ymouse; } fraction = .5; _x += (xTarget-_x)*fraction; _y += (yTarget-_y)*fraction;}
这几行代码使得drag0跟随着鼠标,drag1跟随着drag0,drag2跟随着drag1,……,drag5跟随着drag4

解释一下if这个判断语句

因为drag1.num~drag5.num的值都不为空,所以对于drag1~drag5这5个影片剪辑,执行的代码是:
xTarget = eval("_root.drag"+(num-1))._x;
yTarget = eval("_root.drag"+(num-1))._y;也就是跟随着前一个
而对于drag0,由于没有给它定义num,它的值为空,所以对于drag0,执行的代码是:
xTarget = _root._xmouse;
yTarget = _root._ymouse;也就是跟随着鼠标

“一个跟一个”代码的另一种写法

上面的“一个跟一个”的制作,是在场景上只放置了一个影片剪辑,然后在影片剪辑上添加as代码,再通过在帧上添加as代码(plicateMovie)来复制影片剪辑。

还可以用另外一种代码方式来实现

效果

这种方式是直接在场景上放置了6个影片剪辑,依次命名为:drag0~drag5。然后在帧上添加代码如下:

_root.drag0._x = _root._xmouse+10; _root.drag0._y = _root._ymouse;i = 1;while (i<=5) { dragi = eval("/drag"+i); dragi_prev = eval("/drag"+(i-1)); dragi._x += (dragi_prev._x-dragi._x)*0.5+10; dragi._y += (dragi_prev._y-dragi._y)*0.5; i = i+1;}

该代码也是使得drag0跟随着鼠标,drag1跟随着drag0,drag2跟随着drag1,……,drag5跟随着drag4(但是每个相差10)

不过代码添加完毕,测试的时候,你会发现这些影片剪辑并不会移动。因为还需要下面一个步骤:

在时间轴的第二帧插入帧(F5),因为只有至少2帧,动画才会产生循环,上面那些代码也才会重复运行,否则如果只有1帧的话,那些代码也就只被执行了一次。

另外还有 1、你所指的效果先做一个MC,透明度从100到0的补间动画,其它效果你自己加。
2、把MC拖放到场景,在第一帧加入如下动作,//MC的实例名为mc.
_root.onLoad = function() {//主场景的load事件,只加载一次
for (var i = 1; i<=20; i++) { //for循环开始
_root.mc.plicateMovieClip("mc"+i,i);//复制
_root["mc"+i]._xscale = 100-10*i;//设置x轴缩放比
_root["mc"+i]._yscale = 100-10*i;//设置y轴缩放比
_root["mc"+i]._alpha = 100-5*i;//透明度的变化
}//for循环结束
}//初始化完毕。
_root.onEnterFrame=function(){//onenterframe事件
for(var i=1;i<=20;i++){//for循环
if(i==1){//条件判断,如果i等于1,做以下动作
startDrag(_root["mc"+i],true);//拖动(复制出来的影片剪辑)
_root.mc._alpha=0;//让原来的MC不可见,也可以用mc._visible=0;同样 }
else{//否则
_root["mc"+i]._x=_root["mc"+i]._x+(_root["mc"+(i-1)]._x-_root["mc"+i]._x)/4+(_root["mc"+(i-1)]._x-_root["mc"+i]._x)*0.08;//这里有一个公式,自己去研究,很简单。
_root["mc"+i]._y=_root["mc"+i]._y+(_root["mc"+(i-1)]._y-_root["mc"+i]._y)/4+(_root["mc"+(i-1)]._y-_root["mc"+i]._y)*0.08;

}

}
}

热心网友 时间:2023-09-28 11:11

胶卷很好做啊 LZ 在网上找个 真的胶卷图片 把里面的图片拿橡皮给擦掉 换成你的 就可以了!!!! 从右往左移动 就把 胶卷 第一真 放在最右侧 在第10真 把 胶卷放到最左侧 中间用动画控制就可以了 !! 这样 播放出来就是 循环的

鼠标跟随 ActionScript 3.0 我是做美工的 只能给你粗略的讲一下 顺便给你写一段代码 粘贴进 flash CS3 就能用了 希望能够帮助你

package { 建立包
import flash.display.MovieClip; 载入一个 MovieClip 类
import flash.display.Sprite; 载入一个 Sprite 类 不管是 MovieClip 还是 Sprite 以后你对类 了解的更深了 只用在 display 后面加个 * 就可以了 )
import flash.events.Event; 载入一个 Event 类 ( 里面是动作类 )

public class MouseFollow extends MovieClip {
private var _followSpList : Array; 声明一个 _followSpList 他的类型是 Array (组)

public function MouseFollow( ) { 初始化函数
init( );
}

private function init( ) : void {
_followSpList = new Array( ); 把刚才命名的 _followSpList 这个 在这个函数里面显示
initFollowSprite( );
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler) 监听运动事件
}
private function initFollowSprite( ) : void {
_followSpList.push(getSprite( ));
_followSpList.push(getSprite( ));
}
private function getSprite( ) : Sprite {
var sp : Sprite = new Sprite( ); 用Script 建立一个 名为 sp 的圆形 ,下面来绘制出这个 sp
sp.graphics.beginFill(0);
sp.graphics.drawCircle(0,0,20);
sp.graphics.endFill(); 绘制结束
addChild(sp); 加入显示列表
return sp; 返回值
}
private function enterFrameHandler(event : Event) : void {
for(var i : int = 0; i < _followSpList.length; i++){ 循环语句
if(i == 0){
_followSpList[0].x += (mouseX - _followSpList[0].x) / 5; 加速度公式 也就是 ( 目标点- 要缓动东西的X轴 ) / 速度
_followSpList[0].y += (mouseY - _followSpList[0].y) / 5; 加速度公式
}else{
_followSpList[i].x += (_followSpList[i - 1].x - _followSpList[i].x) / 5; 加速度公式
_followSpList[i].y += (_followSpList[i - 1].y - _followSpList[i].y) / 5; 加速度公式
}
}
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 大西洋海岭的介绍 as3.0怎么学??? 大西洋中脊的介绍 大西洋中脊被一系列与中脊轴线相垂直的横向断裂所切割,这些断裂属于... AS3.0画一个轨道线 AS3.0画图问题 甜脆柿子脱涩方法分享 大学生宿舍给吊风扇吗 固特异韧行闯客有德国产的吗 浙江康乐胶囊有限公司怎么样? 奔驰C200的底盘最小离地间隙是10.7厘米是不是太矮了?? 奔驰c200离地间隙是多少? 2014年河南科技学院院校代码是啥 数码相机开机后出现“影像数据库文件错误无法恢复”应该如何解决? 贺大立倩倩是什么电视剧 帮忙做几道题,做好写出思路,我对这些化学不怎么在行 1mol NH2和1mol OH所含电子数为什么是10NA 枪火战神不用登录能玩 鸡蛋炒粉条的制作方法 怎么辨别洗衣液好坏? 为什么大西洋中脊有地热存在? As3中关于矩形坐标的问题 用颜筋柳骨造句(大约30个左右) 用碑帖造句(大约30个左右) 分析二氯乙烷裂解反应器控制停留时间过长的影响 反应器尺寸的改变对热累积过程的影响? 不同底物流方向对反应器运行有何影响 催化裂化装置中反应器再生器两器压力平衡的影响因素有哪些? 影响脱氧反应器效率的因素 急急急!在给虎皮鹦鹉剪羽的时候突然死了,刚刚还活奔乱跳的,突然就躺下... 刚刚死亡的鹦鹉能救活吗? 綦江羊喝坪适合避暑吗 想去有着“清凉小镇,长寿之乡”的綦江横山避暑,怎么走? 被盗了怎么解除实名绑定? 被盗了怎么注销实名认证? 水泥木地板如何处理 工厂水泥地板清洗方法 水泥地板整理方法 FLASH中的“function”怎么理解? Flash动作中“100*(Math.sin(Math.PI/180*t)*0.2+0.5)”什么意思