学JS的心路历程 - PixiJS -基础(三)
今天我们来试着移动图片吧!
首先,一样先把图片放到PIXI的stage中:
let app = new PIXI.Application({
width: 800,
height: 600,
backgroundColor: 0x1099bb
});
let imageURL =“./image/bunny.png”;
PIXI.loader
.add('bunny',imageURL)
.load(init);
function init(loader,resources){
let bunny = new PIXI.Sprite(
resources['bunny'].texture
);
app.stage.addChild(bunny);
}
但是,一直显示在左上角实在是有点麻烦,我们可以这样写(vmwork):
function init(loader,resources){
let bunny = new PIXI.Sprite(
resources['bunny'].texture
);
bunny.x = app.screen.width / 2;
bunny.y = app.screen.height / 2;
bunny.scale.set(3.5,3.5);
app.stage.addChild(bunny);
}
把bunny的x,y设为canvas的一半,并用scale把大小设为3.5倍。
接着我们监听鼠标事件:
function init(loader,resources){
let bunny = new PIXI.Sprite(
resources['bunny'].texture
);
bunny.x = app.screen.width / 2;
bunny.y = app.screen.height / 2;
bunny.scale.set(3.5,3.5);
bunny.anchor.set(0.5);
mouseEvent(bunny);
app.stage.addChild(bunny);
}
function mouseEvent(bunny){
bunny.interactive = true;
bunny.buttonMode = true;
bunny.on('mousedown',onDragStart)
.on('mouseup',onDragEnd)
}
记得要把监听的物件的interactive设为true,否则会无法触发!
buttonMode是让鼠标靠近图片时会转为手指图案(截图弄不出来只能用说明的)。
然后,撰写监听事件,让图片按下时会透明。
function onDragStart(event){
this.alpha = 0.5;
}
function onDragEnd(){
this.alpha = 1;
}
接着我们需要能按下拖移:
bunny.on('mousedown',onDragStart)
.on('mouseup',onDragEnd)
.on('mousemove',onDragMove);
function onDragStart(event){
this.alpha = 0.5;
this.dragging = true;
}
function onDragEnd(){
this.alpha = 1;
this.dragging = false;
}
function onDragMove(event){
if(this.dragging){
let newPosition = event.data.getLocalPosition(this.parent);
this.x = newPosition.x;
this.y = newPosition.y;
}
}
首先,我们先对bunny新增一个dragging属性,判断鼠标按下及放开的状态;
接着再设定移动时,如果dragging为true,利用getLocalPosition取得bunny.parent的坐标位置,并同时更新bunny的坐标位置。
就可以顺利移动了喔(leafor)!
那么PixiJS就先到这边告一段落了,一样如果有错误及来源未附上欢迎留言指正,我们明天见!
学JS的心路历程 - PixiJS -基础(三)的更多相关文章
- 学JS的心路历程 - PixiJS -基础(一)
建立canvas 今天开始我们一步步来看怎么使用PixiJS吧! 在开始之前,要先提醒各位需要先运行webserver,否则将会遇到一些奇怪的问题喔! 最基本的canvas画布是肯定需要的,Pixi提 ...
- 学JS的心路历程-Promise(三)
今天我们来说then一些特殊情况以及Promise.all()与Promise.race(). 我们都知道函式作为参数传入时,可以参照的方式传入,也能传入时执行拿回传值作使用: function us ...
- 学JS的心路历程Day28 - PixiJS -基础(二)
材质暂存(texture cache) 昨天有说到,图片要放入stage前,需要先把图片转成Sprite的特殊图片物件. 但是我们也可以先将图片放进材质暂存(texture cache). 什么是「材 ...
- 学JS的心路历程Day26 - PixiJS -入坑
后来知道也可以透过canvas让网页动起来! 而PixiJS是使用WebGL在canvas上绘制内容与制作动态 且同时有下列特色: 支持多点触控 掩码与混合模式 可外加WebGL滤镜 多装置支持 等等 ...
- 学JS的心路历程 -函式(三)this
this是什么,取决于被呼叫的呼叫地点. 昨天有提到说,呼叫函式时候会传递隐含参数:arguments和this并讲解了arguments,今天我们就来探讨this吧! 什么是this 我们都会呼叫函 ...
- 学JS的心路历程-物件与原型(三)
昨天有说明到函式与建构式的原型,及指定建构式函式原型为另一个建构式函式,但其实这会造成复写constructor的问题. 复写constructor的问题(vmwork) 我们昨天有提到「建构式函式可 ...
- 学JS的心路历程-物件与原型(一)
前两天说明面向对象的三大特性及JS不符合面向对象,只能称作支持面向对象而已,今天我们来看看JS的原型继承. 首先我们先来看,什么是原型(vmwork): 两个物件之间的原型关系(prototype r ...
- 学JS的心路历程-JS支持面向对象?(一)
昨天在看Prototype看到JS支持面向对象,被前辈问到说那什么是面向对象?JS是面向对象语言吗? 便开始了一连串艰辛爬文过程,今天就来看一下两者有什么差异吧(rgwyjc)! 首先面向对象有三大特 ...
- 学JS的心路历程-闭包closure
闭包是是纯函式语言的一个特性,也是JS的一个关键性的特色,虽然不了解也能开发程序,但我们不是这种人对吧? 闭包不仅可以减少某些高阶功能的代码数量和复杂度,并且可以让我们做到原本无法做的复杂功能.听到这 ...
随机推荐
- 自然语言处理领域重要论文&资源全索引
自然语言处理(NLP)是人工智能研究中极具挑战的一个分支.随着深度学习等技术的引入,NLP领域正在以前所未有的速度向前发展.但对于初学者来说,这一领域目前有哪些研究和资源是必读的?最近,Kyubyon ...
- Linux netstat命令查看并发连接数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 解释: 返回结果示例: LAST_ACK 5 (正在等待处理的 ...
- day6作业(元组,字典,集合)
默写: 1.元组 字典 集合 列表 各自的特点 2.字典添加 删除 修改 循环 必做: 1.餐厅提供了五种不同的菜,使用元组来存储他们,并循环打印出所有菜名,要求用户输入新加的菜名,加入到菜单中,并重 ...
- AJAX发送 PUT和DELETE请求参数传递注意点,了解一下
ajax发送put 和 delete 请求时,需要传递参数,如果参数在url地址栏上,则可以正常使用, 如果在 data:中需要传递参数,(浏览器会使用表单提交的方式进行提交) 则需要注意此时应作如下 ...
- 《算法》第二章部分程序 part 3
▶ 书中第二章部分程序,加上自己补充的代码,包括各种优化的快排 package package01; import edu.princeton.cs.algs4.In; import edu.prin ...
- dubbo 学习资料
入门: http://www.tuicool.com/articles/FnE3em http://www.cnblogs.com/xuyatao/p/6869231.html 最好 http://w ...
- iOS重写和成员变量访问权限
一.重写机制 1.覆盖父类的方法 2.对父类方法做进一步的补充 注意:父类声明过得方法,子类无需声明. * 子类如果重写了父类的方法: 1.父类的指针指向子类的对象,则调用方法时,调用的是子类的方法: ...
- Mybatis学习4——核心文件sqlMapperConfig.xml属性
1.外部文件jdbc.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis ...
- JavaScript 字符串拼接 & setInterval()实现简单动画
在学习JavaScript DOM编程艺术第十章时,遇到了一个小问题: 想要实现的最终效果:一个小方块不断的向下移动. 小方块绝对定位,设置好top与left值后,写了一个动态获取方块到上方距离并在每 ...
- ASP.NET Core MVC 概述
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/overview?view=aspnetcore-2.2 ASP.NET Core MVC 概述 20 ...