以下是小编帮大家整理的Flash实例教程:简单的鼠标翻扑克动画(共含6篇),仅供参考,大家一起来看看吧。同时,但愿您也能像本文投稿人“葫芦葫芦葫芦”一样,积极向本站投稿分享好文章。
本例主要在前面所学3维编程知识的基础上进一步巩固和熟悉rotation与Z轴的使用,以及它们的结合使用,通过本例的制作,来加强前面所学知识的理解,并学习如何配合使用达到更好效果,用简单的方法创作很酷的三维效果,在结合创作中加深理解应用。
本例思路:<1>创建实例背景。
<2>绘制牌的正面和反面并转换为图形元件。
<3>创建一个牌的容器,转换为元件类“Card”,将正反面牌分别放置于第1、2帧。
<4>创建文档类,控制扑克牌对象的rotationY属性。
实例步骤:(1)新建一个空白文档,舞台大小设置为500*250,帧频设置为120,绘制一个与舞台大小同样大小的矩形,并填充放射状渐变色,设置第一色标颜色为(R:0,G:246,B:93)Alpha: 100%,设置第二色标颜色为(R:0,G:131,B:49)Alpha: 100% ,设置第三色标颜色为(R:0,G:62,B:23)Alpha: 100% 。
(2)使用“渐变变形工具”进行调整高光位置和渐变分布模式。
(3)分别创建两个图形元件,命名为“back”和“9”。简单绘制扑克牌“9”的正反面,注册点在中心位置且大小必需相同。
(4)新建一个影片剪辑,命名为“Card” ,命名元件类名也为“Card”,将上面步骤中创建的扑克牌“9”的正反面分别放置于第1、2帧处正中心位置。
(5)创建文档类Main类,首先创建一个牌的容器“container”,并将其放置于舞台中心位置,如构造函数第20到23行代码所示,然后创建扑克牌容器对象并添加到容器“container”中,如第25、26行代码所示,并将扑克牌容器对象停止播放(也就是停留在第1帧)、启动按钮模式和注册侦听器函数,如第27到29行代码所示。
package
{
import flash.display.*;
import flash.events.*;
import caurina.transitions.Tweener;
/**
* ...
* @author lbynet (Tools ->Custom Arguments...)
*/
public class Main extends Sprite {
private var container:Sprite;
private var pane:MovieClip;
private var isback:Boolean;
private var currentPlane:MovieClip;
private var currentRotationY:Number;
public function Main:void {
container = new Sprite();
container.x=stage.stageWidth/2;
container.y=stage.stageHeight/2;
addChild(container);
pane = new Card();
container.addChild(pane);
pane.stop();
pane.buttonMode=true;
pane.addEventListener(MouseEvent.CLICK, onClick);
}
(6)当扑克牌容器对象被单击时调用onClick侦听器函数,为stage注册事件侦听来控制何时切换为正面或是反面,通过判断变量isback 来重新设置被单击扑克牌的rotationY属性,如第36到44行代码所示,在第38、42行代码,通过Tweener 来切换扑克牌的rotationY值在0与-180度之间,
private function onClick(event:MouseEvent):void {
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
currentPlane = MovieClip(event.currentTarget);
if (isback) {
Tweener.addTween(currentPlane, { rotationY:0,time:1 } );
//Tweener.addTween(currentPlane, { z:0,time:1 } );
} else {
Tweener.addTween(currentPlane, { rotationY:-180,time:1 } );
//Tweener.addTween(currentPlane, { z:-200,time:1 } );
}
isback = ! isback;
}
private function enterFrameHandler(event:Event):void {
currentRotationY = currentPlane.rotationY;
if (currentRotationY >= -90 && currentRotationY <= 10) {
if (isback) {
currentPlane.gotoAndStop(2);
} else {
currentPlane.gotoAndStop(1);
}
stage.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
trace(“已清除事件侦听”);
}
}
}
(7) 当用户单击扑克牌容器对象,在第34行代码中注册的侦听器后,执行侦听器函数enterFrameHandler ,并通过时时判断扑克牌容器对象的rotationY的值来判断扑克牌容器对象要切换跳转到哪一帧,如第50到59行代码所示,最后,清除无用的侦听器,如第57行代码所示。
(8)把onClick侦听器函数中第39、43两行代码放开,发布测试,当用户单击扑克牌容器对象后,扑克牌切换翻转并放大(其实际是对象的z轴值减小),当再次单击后,扑克牌切换翻转并缩小致原始状态。
核心提示:Flash鼠标点击显示打散动画教程,
1、新建Flash文档,550*400,其它默认。
2、创建影片剪辑,选椭圆工具,笔触无,填充色放射渐变,画一个椭圆(形状自定,我相你会比我画得更好),右键库中设置链接,类名Ball。
3、返回场景1,第一层建背景(随意),新建as图层,在as图层第一帧输入代码:
//小球的初始位置
var ballx:Number = 275;
var bally:Number = 400;
//小球运动速度
var speed:Number = 5;
stage.addEventListener(MouseEvent.CLICK,shoot);
function shoot(e:MouseEvent):void
{
for(var i:int = 1;i<9;i++)
{
//从库中创建小球
var ball:Ball = new Ball();
//初始化小球位置
ball.x = ballx;
ball.y = bally;
//根据三角函数计算小球的速度
ball.spdx = cosD(i*-20)*speed;
ball.spdy = sinD(i*-20)*speed;
//注册enterFrame事件
ball.addEventListener(Event.ENTER_FRAME,ballMove);
e.target.addChild(ball);
}
}
function ballMove(e:Event):void
{
//获取小球的引用
var obj:MovieClip = e.target;
//设置小球的坐标,实现运动
obj.x += obj.spdx
obj.y += obj.spdy
if(obj.y<0obj.x<0obj.x>550obj.y>400)
{
//移除enterFrame事件
obj.removeEventListener(Event.ENTER_FRAME,ballMove)
//从显示列表删除
stage.removeChild(obj)
}
}
//角度转换为弧度
function angleToRadian(angle:Number):Number
{
return angle*(Math.PI/180);
}
function sinD(angle:Number):Number
{
return Math.sin(angleToRadian(angle));
}
function cosD(angle:Number):Number
{
return Math.cos(angleToRadian(angle));
}
1、新建Flash文档,550*400,其它默认,
2、创建影片剪辑,选椭圆工具,笔触无,填充色放射渐变,画一个椭圆(形状自定,我相你会比我画得更好),右键库中设置链接,类名Ball。
3、返回场景1,第一层建背景(随意),新建as图层,在as图层第一帧输入代码:
//小球的初始位置
var ballx:Number = 275;
var bally:Number = 400;
//小球运动速度
var speed:Number = 5;
stage.addEventListener(MouseEvent.CLICK,shoot);
function shoot(e:MouseEvent):void
{
for(var i:int = 1;i<9;i++)
{
//从库中创建小球
var ball:Ball = new Ball;
//初始化小球位置
ball.x = ballx;
ball.y = bally;
//根据三角函数计算小球的速度
ball.spdx = cosD(i*-20)*speed;
ball.spdy = sinD(i*-20)*speed;
//注册enterFrame事件
ball.addEventListener(Event.ENTER_FRAME,ballMove);
e.target.addChild(ball);
}
}
function ballMove(e:Event):void
{
//获取小球的引用
var obj:MovieClip = e.target;
//设置小球的坐标,实现运动
obj.x += obj.spdx
obj.y += obj.spdy
if(obj.y<0||obj.x<0||obj.x>550||obj.y>400)
{
//移除enterFrame事件
obj.removeEventListener(Event.ENTER_FRAME,ballMove)
//从显示列表删除
stage.removeChild(obj)
}
}
//角度转换为弧度
function angleToRadian(angle:Number):Number
{
return angle*(Math.PI/180);
}
function sinD(angle:Number):Number
{
return Math.sin(angleToRadian(angle));
}
function cosD(angle:Number):Number
{
return Math.cos(angleToRadian(angle));
}
本Flash实例教程主要介绍AS3制作茶杯震动动画,我们先来看看本例的效果,用鼠标指向右侧的茶壶可以看到震动效果,
以下是制作的过程:
首先准备一个图片当做背景。
然后再建立一个新图层,导入一个茶壶素材,然后把它转变为影片剪辑,之后命名实例名字。
目前存在两个图层,然后我们再新建立一个放置ACTION的图层。
var coordX:Number = shaker_mc.x;
var coordY:Number = shaker_mc.y;
var timer:Timer = new Timer(10);
shaker_mc.buttonMode = true;
shaker_mc.addEventListener(MouseEvent.ROLL_OVER,startShake);
shaker_mc.addEventListener(MouseEvent.ROLL_OUT,stopShake);
timer.addEventListener(TimerEvent.TIMER, shakeImage);
function startShake(e:MouseEvent):void{
timer.start ()
}
function stopShake(e:MouseEvent):void{
timer.stop();
shaker_mc.x = coordX;
shaker_mc.y = coordY;
shaker_mc.rotation = 0;
}
function shakeImage(event:Event):void {
shaker_mc.x = coordX+ getMinusOrPlus()*(Math.random()*5);
shaker_mc.y = coordY+ getMinusOrPlus()*(Math.random()*5);
shaker_mc.rotation = getMinusOrPlus()* Math.random()*6;
}
function getMinusOrPlus():int{
var rand : Number = Math.random()*2;
if (rand<1) return -1
else return 1;
}
摘要: 本例介绍运用Flash AS2制作360度全景动画效果,制作过程很简单,适合新手朋友学习,希望能给朋友们带来帮助~~
在学习中遇到问题请到 论坛 发贴交流!
本系列Flash教程由中国教程网Flash互助课堂专为Flash新手制作,更多教程和练习请点击这里,在这里有系列的教程、练习,并有老师对练习进行点评与指导,欢迎朋友们的光临!
更多相关教程:www.jcwcn.com/portal-topic-topicid-1.html
1、首先找一张云层的图片,要大一点的,在Photoshop里处理成左右两连续的图最好,
2、找一张风景图片,然后将云层或者天空部分去掉,变成透明的,也在Photoshop里处理成左右两连续的图,存为png透明格式。
3、在主场景第一层第一帧中建立影片剪辑,实例名称为:bg_mc,在bg_mc下创建影片剪辑实例:bg,进入bg编辑,导入刚刚找到的云层图片。对齐坐标为0,0;
4、在主场景第二层第一帧中建立影片剪辑,实例名称为:img_mc,在img_mc下创建影片剪辑实例:img,进入img编辑,导入刚刚处理过的风景图片。对齐坐标为0,0;
5、在主场景第三层第一帧中加入以下AS代码:
/as----------------------------------------------------stop;
Stage.showMenu = false;
Stage.scaleMode = “noScale”;
fscommand(allowscale, true);
img_mc.img.duplicateMovieClip(“img1”, 2);//复制前景;
bg_mc.bg.duplicateMovieClip(“bg1”, 2);//复制云层北京;
page_width = Stage.width;//设置鼠标感应范围宽度
page_height = Stage.height;//设置鼠标感应范围高度;
step = 40;//设置间隔时间;
img_mc.img._x = 0;//初始前景坐标位置;
img_mc.img1._x = -img_mc.img._width;//初始前景被拼合为环视图
bg_mc.bg._x = 0;//初始背景坐标位置;
bg_mc.bg1._x = -bg_mc.bg._width;//初始背景被拼和为环视图;
img_mc._y = 0;//初始前景和背景y轴位置;
bg_mc._y = 0;//
_root.onEnterFrame. = function() {//根据帧频持续调用函数;
img_width = img_mc._width/2;//设置前景鼠标检测范围;
bg_width = bg_mc._width/2;//设置背景鼠标检测范围;
if (_root._xmouse>0 && _root._xmouse
0 && _root._ymouse
//判断鼠标是否在场景范围内;
img_mc._x = img_mc._x-(_root._xmouse-page_width/2)/step;//控制前景循环;
bg_mc._x = bg_mc._x-(_root._xmouse-page_width/2)/step*1.3;//控制背景循环,速度比前景快1.3倍;
if (img_mc._x<-(img_width-page_width)) {//以下几个if循环为检测是否超出范围;
img_mc._x = page_width;
}
if (img_mc._x>page_width) {
img_mc._x = page_width-img_width;
}
if (bg_mc._x<-(bg_width-page_width)) {
bg_mc._x = page_width;
}
if (bg_mc._x>page_width) {
bg_mc._x = page_width-bg_width;
}
}
};
效果:
素材:
flash动画|跟随|跟随鼠标|蜘蛛
以前个人网上的一个点辍,用画线实现的,希望给有想象力的同志一点启发,
完成效果如下,大家移动鼠标,可以看到蜘蛛丝会跟随鼠标移动和拉伸。
下面讲下实现的方法,
(1)先建三个MC,如下:
一个是spider_mc,画一个蜘蛛,像样点就算了,呵呵!一个是net_mc一个网,当背景用的,没有用!最后一个是空的MC,叫line_mc,用来画线的.(2)回到场景,建三个层如下:
最底一个叫NET,用来放背景net 的,把net拉进去;中间一个层叫line,用来放line_mc的,把line_mc拉进来,并给这个剪辑命名line_mc;最后一个当然是放spider_mc 的啦,有点废话了!(3)好,最后关键一步,多建一个action层,写上如下代码:
speed=10;
spider_mc.onEnterFrame = function() {
dx = _root._xmouse-this._x;
dy = _root._ymouse-this._y;
p =Math.atan(dy/dx)*180/Math.PI;
rota = (dx>0) ? (90+p):(270+p);
this._x += dx/speed;
this._rotation = rota;
this._y += dy/speed;};
line_mc.onEnterFrame = function() {
this.clear();
this.moveTo(0, 0);
this.lineStyle(1, 0xffffff, 100);
this.lineTo(_root.spider_mc._x, _root.spider_mc._y);
};
结束