AS3随机符号移动循环并带有缓动效果?
创始人
2024-11-11 05:00:57
0

以下是一个示例代码,实现了使用AS3随机生成符号,并在舞台上移动并添加缓动效果的循环。

import flash.display.MovieClip;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

var symbols:Array = []; // 存储生成的符号对象
var symbolNum:int = 5; // 符号数量
var stageWidth:int = stage.stageWidth; // 舞台宽度
var stageHeight:int = stage.stageHeight; // 舞台高度

// 创建符号对象
for (var i:int = 0; i < symbolNum; i++) {
    var symbol:MovieClip = new Symbol(); // Symbol为你的符号库中的影片剪辑
    symbol.x = Math.random() * stageWidth; // 随机生成x坐标
    symbol.y = Math.random() * stageHeight; // 随机生成y坐标
    stage.addChild(symbol);
    symbols.push(symbol);
}

// 监听每帧事件,移动符号
stage.addEventListener(Event.ENTER_FRAME, moveSymbols);

function moveSymbols(event:Event):void {
    for (var i:int = 0; i < symbolNum; i++) {
        var symbol:MovieClip = symbols[i];
        var targetX:Number = Math.random() * stageWidth; // 生成新的目标x坐标
        var targetY:Number = Math.random() * stageHeight; // 生成新的目标y坐标
        var tween:Tween = new Tween(symbol, "x", Regular.easeInOut, symbol.x, targetX, 3, true); // 水平方向缓动
        var tween2:Tween = new Tween(symbol, "y", Regular.easeInOut, symbol.y, targetY, 3, true); // 垂直方向缓动
        tween.addEventListener(TweenEvent.MOTION_FINISH, onTweenFinish);
        tween2.addEventListener(TweenEvent.MOTION_FINISH, onTweenFinish);
    }
}

function onTweenFinish(event:TweenEvent):void {
    var tween:Tween = event.currentTarget as Tween;
    tween.removeEventListener(TweenEvent.MOTION_FINISH, onTweenFinish);
    tween.stop();
    tween = null;
}

在代码中,我们首先创建了一个存储符号对象的数组 symbols,然后使用 for 循环生成指定数量的符号对象,并设置其初始位置为随机生成的 x 和 y 坐标。

接下来,我们在舞台上监听 Event.ENTER_FRAME 事件,每一帧执行 moveSymbols 函数。在 moveSymbols 函数中,我们通过遍历符号数组,为每个符号生成新的目标 x 和 y 坐标,并使用 Tween 类来实现缓动效果移动符号。移动完成后,我们监听 TweenEvent.MOTION_FINISH 事件,并在事件处理函数中将 Tween 对象从内存中移除。

这样,符号对象就会随机移动,并且带有缓动效果。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...