Phaser 路径轨迹移动图片效果例子

路径的想法

我们的想法是定义一条路径,然后让一个对象在界面中根据路径移动。

路径原理

实际上在计算机中的路径是由点来构成的,那么我们要绘制出一条路径就需要定义很多点吗?

并不是要定义很多点,我们只需要定义基础的两个或者多个点就能通过Phaser描述出一条路径。

绘制一条路径

 代码如下 复制代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="js/phaser.min.js"></script>
</head>
<body>
<div id="phaser-example"></div>

<script>
    // 创建游戏界面
    var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', {

    });

    var PhaserGame = function () {
        this.bmd = null;
        this.points = {
            'x': [ 32, 600 ],
            'y': [ 240, 240 ]
        };
    };

    PhaserGame.prototype = {
        create: function () {
            this.stage.backgroundColor = '#204090';
            this.bmd = this.add.bitmapData(this.game.width, this.game.height);
            this.bmd.addToWorld();

            // 生成不同y位置
            var py = this.points.y;
            for (var i = 0; i < py.length; i++) {
                py[i] = this.rnd.between(32, 432);
            }
            this.bmd.clear();
            var x = 1 / game.width;

            // 通过X轴生成路径
            for (var i = 0; i <= 1; i += x) {
                // 线性算法生成路径点
                var px = this.math.linearInterpolation(this.points.x, i);
                var py = this.math.linearInterpolation(this.points.y, i);

                // 绘制线条
                this.bmd.rect(px, py, 2, 2, 'rgba(255, 255, 255, 1)');
            }

            /* debug */
            for (var p = 0; p < this.points.x.length; p++) {
                this.bmd.rect(this.points.x[p]-3, this.points.y[p]-3, 6, 6, 'rgba(255, 0, 0, 1)');
            }
        }

    };
    game.state.add('Game', PhaserGame, true);
</script>
</body>
</html>

让图形根据路径移动

 代码如下 复制代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="js/phaser.min.js"></script>
</head>
<body>
    <div id="phaser-example"></div>

<script>
    // 创建游戏界面
    var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', {

    });

    var PhaserGame = function () {

        this.bmd = null;

        this.points = {
            'x': [ 32, 128, 256, 384, 512, 608 ],
            'y': [ 240, 240, 240, 240, 240, 240 ]
        };

        this.preload = function() { // 当预加载数据完成后,执行create函数
            game.load.image('opensource', 'images/opensource.jpg');
        }
    };

    PhaserGame.prototype = {

        create: function () {

            this.stage.backgroundColor = '#204090';

            this.bmd = this.add.bitmapData(this.game.width, this.game.height);
            this.bmd.addToWorld();

            var py = this.points.y;

            for (var i = 0; i < py.length; i++)
            {
                py[i] = this.rnd.between(32, 432);
            }
            opensource = game.add.sprite(0, 0, 'opensource');
            tween = game.add.tween(opensource).to(
                    {   }, 10, Phaser.Easing.Quartic.In, false ,0 , 0)

            this.plot();

        },

        plot: function () {

            this.bmd.clear();

            var x = 1 / game.width;

            for (var i = 0; i <= 1; i += x)
            {
                var px = this.math.linearInterpolation(this.points.x, i);
                var py = this.math.linearInterpolation(this.points.y, i);

//                var px = this.math.bezierInterpolation(this.points.x, i);
//                var py = this.math.bezierInterpolation(this.points.y, i);

                var px = this.math.catmullRomInterpolation(this.points.x, i);
                var py = this.math.catmullRomInterpolation(this.points.y, i);

                this.bmd.rect(px, py, 1, 1, 'rgba(255, 255, 255, 1)');

                console.log(px%2);
                if(px%8 > 6){
                    tween.to(
                            {x:px,y:py   }, 10, Phaser.Easing.Linear.In, false ,0 , 0);

                }

            }
            tween.start();

            /* debug */
            for (var p = 0; p < this.points.x.length; p++)
            {
                this.bmd.rect(this.points.x[p]-3, this.points.y[p]-3, 6, 6, 'rgba(255, 0, 0, 1)');
            }
        }

    };

    game.state.add('Game', PhaserGame, true);
</script>
</body>
</html>

时间: 2024-08-03 06:11:57

Phaser 路径轨迹移动图片效果例子的相关文章

html5+css3网页模糊图片效果简单例子

效果如下 例子1 <!DOCTYPE html> <html> <head>  <meta charset="utf-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">     &

PHP中使用Imagick实现各种图片效果实例_php技巧

imagick是一个功能强大的图像处理库.  说是翻译 其实就是简要介绍imagick 的主要功能的或者说是我觉得比较实用的功能函数的介绍 以及使用的例子.  因为本人的英语水平有限,所以采用比较通俗或者说比较贴近应用化的语言来描述.  先欣赏一组炫丽的效果:   偏置图像:   例子:  复制代码 代码如下:   <?php  ini_set('display_errors',1);  header('Content-type: image/jpeg');  $image = new Imag

新颖实用的显示图片效果

图片效果|显示 Lightbox--新颖实用的显示图片效果 "Lightbox"是一个别致且易用的图片显示效果,它可以使图片直接呈现在当前页面之上而不用转到新的窗口.文字表述显然不够明了,所以请先看一下 Lightbox 的演示页面. 如何使用? Lightbox能非常简单地应用到您的页面上.首先将lightbox.js包含到您页面的header部分: <script src="lightbox.js" type="text/javascript&q

Lightbox—新颖实用的显示图片效果

图片效果|显示 Lightbox--新颖实用的显示图片效果 "Lightbox"是一个别致且易用的图片显示效果,它可以使图片直接呈现在当前页面之上而不用转到新的窗口.文字表述显然不够明了,所以请先看一下 Lightbox 的演示页面. 如何使用? Lightbox能非常简单地应用到您的页面上.首先将lightbox.js包含到您页面的header部分: <script src="lightbox.js" type="text/javascript&q

Flash制作的好看的图片效果动画

图片效果 看效果: 代码如下: var old:Number = 1; //记录上张显示的图片 var oldGo:Boolean; var oldpos:Number = 700; var picNum:Number = 9; //anliPath是用于加载外部图片的路径 //var anliPath:String = "works/1-"; for (i=1; i<=picNum; i++) {         btn_mc.attachMovie("btn&quo

精通CSS+DIV网页样式与布局--图片效果

        提到图片效果,小伙伴们可能会想到美图秀秀,ps等,这些软件都是款非常不错的照片处理软件,包括常用的:黑白,增强,高斯,高对比,夜视,老照片和铅笔画等等.不管你是否是专业的 照片拍摄人员,我们都可以通过照片处理软件轻松实现自己想要的照片效果.这篇博客,小编将继续来总结CSS+DIV的其她效果来进行分析,有兴趣的小伙伴可以点击以下链接,了解小编之前讲解过的关于CSS的一些基础知识:         精通CSS+DIV网页样式与布局--初探CSS        精通CSS+DIV网页样

jquery 预加载图片效果插件与实例

文章一款告诉你如何利用jquery 预加载图片的实例教程,同时你也可以根据它出制作出漂亮的jquery 预加载图片效果哦. <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/x

qt-加载qss后没有显示应有的图片效果

问题描述 加载qss后没有显示应有的图片效果 图片文件都已加入资源中,确认图片路径没有问题. 相同的qss语句: background-image:url(:/xxx.png) 如果在QT自带的样式编辑器中写入,则可以起作用. 但如果写入qss文件后加载qss,则不起作用,qss文件中其他的设置宽高圆角弧度都没问题,就是背景图片加载不了. qt版本:5.3.2 解决方案 估计就是路径不对,这个url可以试试修改一下

基于jquery的滚动鼠标放大缩小图片效果_jquery

今天要出个鼠标滚动放大缩小图片的功能,看似很简单,从网上一搜,出现的都是onmousewheel的例子,全部只支持IE浏览器,结果查出火狐有对应的DOMMouseScroll来处理这个功能,代码如下,并加上注意的注释项: 复制代码 代码如下: $(function(){ $(".body img").each(function(){ if($.browser.msie){ $(this).bind("mousewheel",function(e){ var e=e|