- 浏览: 427466 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
xiaomuxingren:
你好,请问update-alternatives --inst ...
JDK8安装及jenkins安装 -
wahahachuang8:
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方 ...
HTML5 WebSocket -
晨曦的朝阳:
刚好有需求,学习一下!
MySql主从配置 -
mfkvfn:
这是恶意的商业竞争呀
解决 android 微信5.0及后续版本无法打开电话号码的问题 -
fwyhf:
require('./monitor/module_liste ...
NodeJS Server 进程自动重启
1、分组sprite
组可以创建游戏场景,并将类似的精灵一起管理为单个单元。Pixi有一个对象称为a Container ,让你这样做。让我们来看看它是如何工作的。
想象一下,你想显示三个精灵:猫,刺猬和老虎。创建它们,并设置他们的位置 - 但不要将它们添加到舞台上。
接下来,创建一个animals容器,将它们全部组合在一起,如下所示:
然后使用addChild对精灵添加到该组。
最后将组添加到舞台。
(你知道,stage对象也是一个Container。它是所有Pixi sprites的根容器。)
这里是这段代码产生:
在该图像中看不到animals的是包含精灵的不可见组。
您现在可以将animals组视为一个单元。你可以认为a Container是一种没有纹理的特殊类型的sprite。
如果你需要一个包含所有子sprite的列表animals,使用它的children数组来找出。
这告诉你animals有三个精灵作为孩子。
由于该animals组就像任何其他的精灵,你可以改变它的x和y值alpha,scale和所有其他的精灵属性。您在父容器上更改的任何属性值将以相对方式影响子精灵。所以如果你设置组x和y位置,所有的子精灵将相对于组的左上角重新定位。如果你将animals's x和y位置设置为64 会发生什么?
整组精灵会向右移动64像素,向下移动64像素。
该animals组还具有其自己的维度,其基于由包含的精灵占据的面积。你可以找到它width和 height值如下:
如果更改组的宽度或高度会发生什么?
所有的子sprite将缩放以适应这种变化。
你可以嵌套任意多的Containers在其他 Containers内你喜欢,创建深层次结构,如果你需要。然而,DisplayObject(像一个Sprite或另一个 Container)一次只能属于一个父母。如果你使用addChild一个sprite是另一个对象的子对象,Pixi会自动将其从当前父对象中删除。这是一个有用的管理,你不必担心。
2、本地和全局位置
当您添加一个精灵到Container,其x与y 位置相对于集团的左上角。这是sprite的本地位置例如,你认为猫的位置在这个图像是什么?
让我们来看看:
16?是! 这是因为猫从该组的左上角只偏移了16个像素。16是猫的本地位置。
精灵也有一个全局位置。全局位置是从舞台的左上角到精灵的锚点(通常是精灵的左上角)的距离。你可以在toGlobal方法的帮助下找到精灵的全局位置。就是这样:
这意味着你可以在animals 组内找到猫的全局位置,如下所示:
这给你一个x和y的80位这正是猫的相对于舞台的左上角的全球地位。
如果你想找到一个精灵的全局位置,但不知道精灵的父容器是什么?每个sprite有一个称为的属性parent,将告诉你sprite的父母是什么。如果你直接添加一个sprite到stage,那么 stage就会是sprite的parent。在上面的例子中,cat父母是animals。这意味着你可以通过编写代码来获得猫的全球位置:
即使你不知道当前的父容器是什么,它也会工作。
还有一种方法来计算全球位置!而且,它实际上是最好的方式,所以挺身而出!如果你想知道从画布的左上角到精灵的距离,并且不知道或不在乎精灵的父容器是什么,请使用 getGlobalPosition方法。这里是如何使用它来找到老虎的全球位置:
在我们使用的例子中,这将给你x和y值128。特别的getGlobalPosition是,它是高度精确的:它会给你精灵的准确的全球位置,只要它的本地位置变化。我要求Pixi开发团队添加这个功能专门用于游戏的准确碰撞检测。
如果要将全局位置转换为本地位置,该怎么办?您可以使用该toLocal方法。它的工作方式类似,但使用这种一般格式:
使用toLocal找到一个精灵和任何其他子画面之间的距离。这里是如何找到老虎的本地位置,相对于刺猬。
个x值为32,y值为32.你可以在示例图片中看到,老虎的左上角是32像素,左边是刺猬的左上角。
3、使用ParticleContainer来组合精灵
Pixi有一个替代的,高性能的方法来组合sprite称为ParticleContainer(PIXI.ParticleContainer)。任何精灵内部的 ParticleContainer渲染将比如果他们在一个常规的2至5倍快 Container。这是一个伟大的性能提升游戏。
创建一个ParticleContainer这样:
然后使用addChild添加精灵到它,就像你会与任何普通Container。
如果你决定使用,你必须做一些妥协 ParticleContainer。一个精灵里面ParticleContainer只有几个基本属性: x,y,width,height,scale,pivot,alpha,visible-这就是它。此外,它包含的精灵不能有自己的嵌套的孩子。A ParticleContainer也不能使用Pixi的高级视觉效果,如过滤器和混合模式。每个都ParticleContainer可以只使用一个纹理(所以你必须使用spritesheet,如果你想要Sprite有不同的外观)。但是对于你获得的巨大的性能提升,这些妥协通常是值得的。您可以在同一个项目中同时使用 Containers和ParticleContainers,因此您可以微调优化。
为什么sprite在Particle Container这么快?因为sprite的位置是直接在GPU上计算的。Pixi开发团队正在努力在GPU上卸载尽可能多的精灵处理,因此,您使用的最新版本的Pixi可能ParticleContainer比我在这里描述的功能丰富得多。有关详细信息,请查看当前ParticleContainer 文档。
在您创建的位置ParticleContainer,您可以提供两个可选参数:容器可容纳的sprite的最大数量,以及一个options对象。
大小的默认值为15,000。所以,如果你需要包含更多的精灵,设置它更高的数字。选项参数是可以设置5布尔值的对象:scale,position,rotation,uvs和 alpha。的默认值position是true,但其余的人都设置为false。这意味着,如果你想改变rotation, scale,alpha,或uvs在精灵的ParticleContainer,你要设置这些属性true,就像这样:
但是,如果你不认为你需要使用这些属性,保持它们设置false为挤出最大的性能。
有什么uvs选择?只有设置它,true如果你有粒子,当他们的动画时改变他们的纹理。(所有的精灵的纹理也需要在相同的tileset图像为这个工作。)
(注:UV映射是一个三维图形显示的术语,指的是x与y正被映射到三维表面纹理(图像)的坐标。U是x轴和V是y轴WebGL的已经使用。x,y和z对于三维空间定位,因此U 和V被选为代表x,并y为2D图像纹理。)
组可以创建游戏场景,并将类似的精灵一起管理为单个单元。Pixi有一个对象称为a Container ,让你这样做。让我们来看看它是如何工作的。
想象一下,你想显示三个精灵:猫,刺猬和老虎。创建它们,并设置他们的位置 - 但不要将它们添加到舞台上。
//The cat var cat = new Sprite(id["cat.png"]); cat.position.set(16, 16); //The hedgehog var hedgehog = new Sprite(id["hedgehog.png"]); hedgehog.position.set(32, 32); //The tiger var tiger = new Sprite(id["tiger.png"]); tiger.position.set(64, 64);
接下来,创建一个animals容器,将它们全部组合在一起,如下所示:
var animals = new Container();
然后使用addChild对精灵添加到该组。
animals.addChild(cat); animals.addChild(hedgehog); animals.addChild(tiger);
最后将组添加到舞台。
stage.addChild(animals); renderer.render(stage);
(你知道,stage对象也是一个Container。它是所有Pixi sprites的根容器。)
这里是这段代码产生:
在该图像中看不到animals的是包含精灵的不可见组。
您现在可以将animals组视为一个单元。你可以认为a Container是一种没有纹理的特殊类型的sprite。
如果你需要一个包含所有子sprite的列表animals,使用它的children数组来找出。
console.log(animals.children) //Displays: Array [Object, Object, Object]
这告诉你animals有三个精灵作为孩子。
由于该animals组就像任何其他的精灵,你可以改变它的x和y值alpha,scale和所有其他的精灵属性。您在父容器上更改的任何属性值将以相对方式影响子精灵。所以如果你设置组x和y位置,所有的子精灵将相对于组的左上角重新定位。如果你将animals's x和y位置设置为64 会发生什么?
animals.position.set(64, 64);
整组精灵会向右移动64像素,向下移动64像素。
该animals组还具有其自己的维度,其基于由包含的精灵占据的面积。你可以找到它width和 height值如下:
console.log(animals.width); //Displays: 112 console.log(animals.height); //Displays: 112
如果更改组的宽度或高度会发生什么?
animals.width = 200; animals.height = 200;
所有的子sprite将缩放以适应这种变化。
你可以嵌套任意多的Containers在其他 Containers内你喜欢,创建深层次结构,如果你需要。然而,DisplayObject(像一个Sprite或另一个 Container)一次只能属于一个父母。如果你使用addChild一个sprite是另一个对象的子对象,Pixi会自动将其从当前父对象中删除。这是一个有用的管理,你不必担心。
2、本地和全局位置
当您添加一个精灵到Container,其x与y 位置相对于集团的左上角。这是sprite的本地位置例如,你认为猫的位置在这个图像是什么?
让我们来看看:
console.log(cat.x); //Displays: 16
16?是! 这是因为猫从该组的左上角只偏移了16个像素。16是猫的本地位置。
精灵也有一个全局位置。全局位置是从舞台的左上角到精灵的锚点(通常是精灵的左上角)的距离。你可以在toGlobal方法的帮助下找到精灵的全局位置。就是这样:
parentSprite.toGlobal(childSprite.position)
这意味着你可以在animals 组内找到猫的全局位置,如下所示:
console.log(animals.toGlobal(cat.position)); //Displays: Object {x: 80, y: 80...};
这给你一个x和y的80位这正是猫的相对于舞台的左上角的全球地位。
如果你想找到一个精灵的全局位置,但不知道精灵的父容器是什么?每个sprite有一个称为的属性parent,将告诉你sprite的父母是什么。如果你直接添加一个sprite到stage,那么 stage就会是sprite的parent。在上面的例子中,cat父母是animals。这意味着你可以通过编写代码来获得猫的全球位置:
cat.parent.toGlobal(cat.position);
即使你不知道当前的父容器是什么,它也会工作。
还有一种方法来计算全球位置!而且,它实际上是最好的方式,所以挺身而出!如果你想知道从画布的左上角到精灵的距离,并且不知道或不在乎精灵的父容器是什么,请使用 getGlobalPosition方法。这里是如何使用它来找到老虎的全球位置:
tiger.getGlobalPosition().x tiger.getGlobalPosition().y
在我们使用的例子中,这将给你x和y值128。特别的getGlobalPosition是,它是高度精确的:它会给你精灵的准确的全球位置,只要它的本地位置变化。我要求Pixi开发团队添加这个功能专门用于游戏的准确碰撞检测。
如果要将全局位置转换为本地位置,该怎么办?您可以使用该toLocal方法。它的工作方式类似,但使用这种一般格式:
sprite.toLocal(sprite.position, anyOtherSprite)
使用toLocal找到一个精灵和任何其他子画面之间的距离。这里是如何找到老虎的本地位置,相对于刺猬。
tiger.toLocal(tiger.position, hedgehog).x tiger.toLocal(tiger.position, hedgehog).y
个x值为32,y值为32.你可以在示例图片中看到,老虎的左上角是32像素,左边是刺猬的左上角。
3、使用ParticleContainer来组合精灵
Pixi有一个替代的,高性能的方法来组合sprite称为ParticleContainer(PIXI.ParticleContainer)。任何精灵内部的 ParticleContainer渲染将比如果他们在一个常规的2至5倍快 Container。这是一个伟大的性能提升游戏。
创建一个ParticleContainer这样:
var superFastSprites = new ParticleContainer();
然后使用addChild添加精灵到它,就像你会与任何普通Container。
如果你决定使用,你必须做一些妥协 ParticleContainer。一个精灵里面ParticleContainer只有几个基本属性: x,y,width,height,scale,pivot,alpha,visible-这就是它。此外,它包含的精灵不能有自己的嵌套的孩子。A ParticleContainer也不能使用Pixi的高级视觉效果,如过滤器和混合模式。每个都ParticleContainer可以只使用一个纹理(所以你必须使用spritesheet,如果你想要Sprite有不同的外观)。但是对于你获得的巨大的性能提升,这些妥协通常是值得的。您可以在同一个项目中同时使用 Containers和ParticleContainers,因此您可以微调优化。
为什么sprite在Particle Container这么快?因为sprite的位置是直接在GPU上计算的。Pixi开发团队正在努力在GPU上卸载尽可能多的精灵处理,因此,您使用的最新版本的Pixi可能ParticleContainer比我在这里描述的功能丰富得多。有关详细信息,请查看当前ParticleContainer 文档。
在您创建的位置ParticleContainer,您可以提供两个可选参数:容器可容纳的sprite的最大数量,以及一个options对象。
var superFastSprites = new ParticleContainer(size, options);
大小的默认值为15,000。所以,如果你需要包含更多的精灵,设置它更高的数字。选项参数是可以设置5布尔值的对象:scale,position,rotation,uvs和 alpha。的默认值position是true,但其余的人都设置为false。这意味着,如果你想改变rotation, scale,alpha,或uvs在精灵的ParticleContainer,你要设置这些属性true,就像这样:
var superFastSprites = new ParticleContainer( size, { rotation: true, alpha: true, scale: true, uvs: true } );
但是,如果你不认为你需要使用这些属性,保持它们设置false为挤出最大的性能。
有什么uvs选择?只有设置它,true如果你有粒子,当他们的动画时改变他们的纹理。(所有的精灵的纹理也需要在相同的tileset图像为这个工作。)
(注:UV映射是一个三维图形显示的术语,指的是x与y正被映射到三维表面纹理(图像)的坐标。U是x轴和V是y轴WebGL的已经使用。x,y和z对于三维空间定位,因此U 和V被选为代表x,并y为2D图像纹理。)
发表评论
-
webpack4 - 安装
2019-04-15 17:50 0webpack4 安装 -
项目中使用webpack5
2017-11-26 16:40 1637近期react及vueJs的普及,ES6也有相应的推广及普及, ... -
PIXI 完整示例-PIXI文档翻译(7)
2017-02-27 10:04 1024案例研究:寻宝者 所 ... -
PIXI 碰撞检测-PIXI文档翻译(6)
2017-02-27 09:59 1905你现在知道如何制作各种各样的图形对象,但你能用他们做什么?一个 ... -
PIXI 基本图形-PIXI文档翻译(6)
2017-02-26 18:06 31771、基本图形 使用图像纹理是制作精灵的最有用的方法之一,但Pi ... -
PIXI 移动 Sprite-PIXI文档翻译(4)
2017-02-26 11:38 1445你现在知道如何显示精灵,但是你怎么让他们移动?这很容易:使用创 ... -
PIXI 创建 Sprite的几种方法-PIXI文档翻译(3)
2017-02-26 11:25 58641、通过spritesheets图创建sprite 你现在知 ... -
PIXI Sprite的定位,尺寸和旋转-PIXI文档翻译(2)
2017-02-26 00:14 61631、定位Sprite 现在你知道如何创建和显示精灵,让我们了解 ... -
PIXI入门-PIXI文档翻译(1)
2017-02-25 09:47 36571、创建渲染器和舞台 ... -
如何快速的开放一个小游戏
2016-11-02 20:50 01、找一个可用的框架 2、通读一下文档和源码 3、搞一个小创意 ... -
生产环境页面性能监控
2013-04-18 00:46 1931嵌入式的开发 在代码片断中嵌入各个时间点,最后统一上报。 一 ... -
XSS攻击原理解析
2013-04-16 23:49 2720XSS全称Cross Site Script,跨站脚本攻击 它 ... -
CRSF攻击原理解析
2013-04-16 23:02 8037CRSF全称 Cross Site Request Forge ... -
浏览器缓存机制详解(转)
2013-03-27 21:59 1526同时参考的是W3C RFC2616规范中的 HTTP1.1/H ... -
页面性能优化
2013-03-27 21:56 1874压缩JS,CSS,图片 合并 ... -
JavaScript异常监控
2013-03-27 21:50 2263JavaScript异常一般可通过try ca ... -
HTML5 geolocation 规范翻译
2013-04-22 13:32 1953摘要 规范定义了脚本方式访问主机地理位置信息的API。 安全 ... -
JS文档构建(jsdoc)
2012-06-07 02:08 1714一、命令分类 类定义 @class 类型定义 @ve ... -
HTML5 Forms
2012-06-03 22:16 1284表单元素类型 常用:tel, email, date, url ... -
HTML5 WebSocket
2012-06-02 11:12 25441.WebSocket的优缺点 大 ...
相关推荐
包裹pixijs-quickstarter 使用pixiJS和...快速开始节点版本> = 8.0(建议10.6.0)和NPM> = 5(建议6.1.0) # clone the repo.# --depth 1 removes all but one .git commit history (Optional).git clone --depth 1 ...
将缩小的文件安装到node_modules/pixi-after-effects/dist/pixi-ae.js 演示 参见 或按照以下步骤运行计算机 yarn install # install dependencies yarn server # start simply server by webpack-dev-server ...
支持DDS(S3TC DXT1-3-5,ATC,ATCA / ATC显式,ATCI / ATC内插),PVR(PVRTC,ETC1,S3TC DXT1-3-5,PVRTC 2-4bpp RGB-RGBA),ASTC(所有块大小)2D LDR预设 支持先进的DXT压缩 最低演示 解析器很容易破解到您的...
:speech_balloon: :winking_face_with_tongue: 像素表情选择器表情选择器用法import { EmoteSelector } from "pixi-emote-selector" ;const emoteSelector = new EmoteSelector ( { options : [ PIXI . Sprite . ...
- Pixi.js中的Stage、Container、Sprite和Text等基本概念和它们在创建UI元素时的应用。 - 如何使用Pixi.js实现图形动画和用户交互。 - 在WebGL环境下优化性能的最佳实践。 通过深入研究和分析这个项目,开发者可以...
ReactPIXI :rainbow: 使用React声明式风格编写应用程序 :OK_hand: ... import { Stage , Sprite } from ' @inlet/react-pixi ' const App = () => ( < Sprite xss=removed xss=removed xss=removed> )
pixi-action,一个类似 cocos2d-x 使用方法的 Pixi.js 动画插件。 var renderer = new PIXI.autoDetectRenderer(800,600); document.body.appendChild(renderer.view); var stage = new PIXI.Container();...
let sprite = new PIXI.Sprite(PIXI.Texture.from('images/myImage.png')); app.stage.addChild(sprite); ``` 4. 开始动画循环:通过`ticker`管理动画更新。 ```javascript let ticker = PIXI.Ticker.shared; ticker...
PIXI PARALLAX可调整大小一个示例,该示例使用Tiling Sprite创建视差滚动效果并使PixiJS渲染适合浏览器大小。学分创建 。 的视差图像。 为英雄跑步动画。执照版权所有(c)2017 Maicon Feldhaus 特此免费授予获得该...
<pixi-sprite :texture="texture" /> </pixi-container> export default { data() { return { texture: 'path/to/your/sprite.png', }; }, }; ``` 这就是Vue-pixi的基本用法。通过深入学习Vue3的特性和...
欧拉公式求长期率的matlab代码像素投影 2d和3d投影的集合。 去做: 文件 图形支持 兼容性 它可以与PixiJS v5一起使用。 对于v4,请参见,npm版本0.2.8...PIXI.Sprite(); sprite.con 收起 资源推荐资源详情资源评论
)用法命令行$ spritesheet-js assets/ * .png 选项: $ spritesheet-jsUsage: spritesheet-js [options] < files>Options:-f, --format format of spritesheet (starling, sparrow, json, pixi.js, easel.js, cocos...
欧拉公式求长期率的matlab代码像素投影 2d和3d投影的集合。 去做: 文件 图形支持 兼容性 它可以与PixiJS v5一起使用。 对于v4,请参见,npm版本0.2.8...PIXI.Sprite(); sprite.con 收起 资源推荐资源详情资源评论
"pixi-rulers"是一个专门为Pixi.js设计的库,它提供了一套直观的标尺工具,帮助开发者在应用中实现精准的测量功能。 该库的核心功能是添加和管理2D标尺,以辅助用户在Pixi.js场景中进行测量。通过这个库,开发者...
我们可以创建一个`PIXI.Sprite`来表示食物,并在每次蛇吃到食物后重新生成。当蛇碰到食物时,增加蛇的长度,更新食物的位置。 游戏的边界处理也至关重要。我们需要确保蛇不会离开舞台的边界,否则游戏结束。检测...
- **添加背景图**:通过`PIXI.Sprite.fromImage()`方法创建一个精灵对象,并将其作为舞台的子元素添加进去。同时计算背景图的位置,使其居中显示。 ##### 2. 主游戏场景设置 ```javascript var mainStage = new ...
:joystick:适用于pixi.js的虚拟触摸操纵杆:joystick:pixi-virtual-joystick适用于pixi.js的虚拟触摸操纵杆用法从“ pixi-virtual-joystick”导入{操纵杆}; const joystick = new Joystick({外部:PIXI.Sprite.from...
像素层允许在不更改场景图的情况下更改pixi容器的渲染顺序适用于PixiJS> = v5.3 对于PixiJS v4,请使用对于PixiJS <v5.3,请使用npm版本0.2.3 编译文件位于“ dist”文件夹中如果不创建Stage并将其设置为root,则...
const sprite = PIXI.Sprite.from('path/to/image.png'); stage.addChild(sprite); ``` 这里,我们使用`PIXI.Sprite.from()`方法加载图像资源并创建一个精灵。然后将精灵添加到舞台上。 Pixi.js还提供了`Text`类...
欧拉公式求长期率的matlab代码像素投影 2d和3d投影的集合。 去做: 文件 图形支持 兼容性 它可以与PixiJS v5一起使用。 对于v4,请参见,npm版本0.2.8对于v5.1,请使用npm版本0.3.5 ...PIXI.Sprite(); sprite.con