赞
踩
7.ts 跳转场景
-
- director.loadScene("game");
8 ts--在ts文件声明变量时,前面加上注解 @property,此变量量就可以在cocos creator编辑器里面修改
9 ts 将v2坐标转v3坐标
- let locaton:Vec2= event.getLocation();//触摸事件 返回的坐标是世界坐标的位置
- this.curPos=v3(locaton.x,locaton.y,0);//将当前设置为手指或者鼠标
10 点击事件返回的坐标是世界坐标的位置,而小飞机是canvas的子节点 ,
this.node.setPosition(this.curPos);
上面代码设置的是相对于canvas的坐标
this.node.parent.getComponent(UITransform).convertToNodeSpaceAR(v3(locaton.x,locaton.y,0));
this.node.parent:获取到局部的canvas节点
.getComponent(UITransform) :获取到UITransform组件下的convertToNodeSpaceAR属性
将v2坐标转为v3坐标
11.了解常驻界面的概念常驻节点介绍
12节点池
NodePool
13 find方法
获取节点
this.presistNode=find("PresistNode");;
获取节点的属性
this.presistNode.getComponent(PresistNode).
【presistNode为节点对象】【PresistNode为presistNode节点绑定的ts脚本】
14播放动画
15 绑定普通的碰撞监听
- let collider:Collider2D=this.getComponent(Collider2D);
- if(collider){
- collider.on(Contact2DType.BEGIN_CONTACT,this.onBeginConcat,this)
- }
- onBeginConcat(selt:Collider2D,other:Collider2D,contact:IPhysics2DContact|null){
-
- }
other参数 是被碰撞的节点
other.node 就可以获得被碰撞的node
other.getComponent(绑定的js)//可以获取被绑定的js
other.node.getChildByName("节点名称")//可以获得被碰撞的节点
16播放音效
先引入AudioSource组件
声明AudioClip类型,引入音效
- @property(AudioClip)
- gameBackMusic:AudioClip=null;//集中敌机音效
播放音乐
this.node.getComponent(AudioSource).playOneShot(this.gameBackMusic);
17 将节点添加到Canvas节点上去
find("Canvas").addChild
- let anim=this.presistNode.getComponent(PresistNode).animFactory.createAnim();
- anim.setPosition(this.node.getPosition())
- find("Canvas").addChild(anim);
- anim.getComponent(Animation).play();
anim.getComponent(Animation).play()//Animation 需要收到导入,将 Animation复制到上面cc的位置,play方法 播放动画
动画节点自动删除
第一个箭头添加帧事件
然后填写贞事件名字,再事件方法里面清楚节点
18绑定键盘输入事件
input.on(Input.EventType.KEY_DOWN, this.onKeyDown, this);
- onKeyDown(event: EventKeyboard) {
- console.log(event)
- switch (event.keyCode) {
- case KeyCode.KEY_W:
- console.log('上');
- break;
- case KeyCode.KEY_S:
- console.log('下');
- break;
- case KeyCode.KEY_A:
- console.log('左');
- break;
- case KeyCode.KEY_D:
- console.log('右');
- break;
- }
- }
19刚体问题
现在一个单色节点,然后在节点上添加刚体组件,这样的话 滚动的地面就可以用坐标了
20 Ts 加载网络图片
- @property({ type: Sprite })
- spritee: null;
-
-
- assetManager.loadRemote(url,{ext : '.png'}, (err,asset : ImageAsset)=>{
- if(err) {
- console.log(err);
- }
- else {
- console.log('头像下载成功');
- that.spritee.spriteFrame = SpriteFrame.createWithImage(asset);
- }
- });
21 引入微信API
项目根目录执行
npm i -S weixin-js-sdk
- const wx = window['wx'];//避开ts语法检测
-
- 然后
- wx.api方法名就行
22scrollview对象获取滑动的位置
scrollview.getScrollOffset();
23获取scrollview的content节点以及他的UI节点
var conUi=this.scrollview.getChildByName("view").getChildByPath("content").getComponent(UITransform)
console.log("content的高度",conUi,conUi.height);
24 ts1文件 挂在预制体1上 ts2文件挂在另一个预制体2上
预制体2动态添加到预制体1上面的 预制体2的点击事件想通知预制体1
第一步 在ts1文件声明变量(guanfaFab ts1文件名)
public static ins: guanfaFab = null;
在ts1文件上start方法里 复制this上下文
- start() {
- guanfaFab.ins = this
- }
第二 在ts2文件去引用
import { guanfaFab } from './guanfaFab';
btnclick就是ts1文件里的一个方法明
-
- guanfaFab.ins.btnclick(res,this.numNow);
25序列动画
- tween(this.node)
- .delay(num_delayRandom)
- .to(num_toRandom,{scale:new Vec3(1,1,1)})
- .to(num_toRandom,{scale:new Vec3(0.3,0.3,0.3)})
- .union()
- .repeatForever()
- .start()
-
- //节点
26大摆锤动画(this.dabaichuiImg这是一个精灵节点)
- tween(this.dabaichuiImg.node)
- .to(2,{angle:-70})
- .to(2,{angle:70})
- .union()
- .repeatForever()
- .start()
27首先点击隐藏的节点用代码显示出来(toukuiK是一个精灵节点)
toukuiK.node.active=true;
28世界坐标转换
1.得到目标节点A的世界坐标 getposition
2.将A的世界坐标转成B的父节点的AR converToNodeSpaceAR
3.用AR的返回值设B的位置setposition
v3_position 是预制体自己的坐标
this.node.getComponent(UITransform) 获取预制体的 组件
v3_position_word 获取的世界坐标
let v3_position_word=this.node.getComponent(UITransform).convertToWorldSpaceAR(v3_position);
29获取重力加速度
PhysicsSystem2D.instance.gravity
29修改重力加速度(反重力所有有个负号)
PhysicsSystem2D.instance.gravity=new Vec2(gravity.x,-gravity.y);
30获取Collider2D组件 监听碰撞
- // let collider=this.getComponent(Collider2D);
- // collider?.on(Contact2DType.BEGIN_CONTACT,()=>{
- // this.can_jum=true;
- // },this);
31获取Collider2D多个组件 监听多个碰撞,使用tag区分
- let colliders=this.getComponents(Collider2D);
- for(let collider of colliders){
- // /如果是底下那个Collider2D触到地面的话 就可以再次跳跃
-
- if(collider.tag==1||collider.tag==2){
- let gravity=PhysicsSystem2D.instance.gravity;//获取重力
- collider?.on(Contact2DType.BEGIN_CONTACT,()=>{
- console.log(collider.tag,PhysicsSystem2D.instance.gravity);
- if(collider.tag==1&&Math.sign(gravity.y)>0){
- return false;
- }else
- if(collider.tag==2&&Math.sign(gravity.y)<0){
- return false;
- }
- this.can_jum=true;
- },this);
- }
-
- }
32 这个sensor 只监听碰撞无实际碰撞效果
33.初始化之后修改刚体大小 这个节点上挂了BoxCollider2D组件,碰撞之后修改他的碰撞范围宽高(碰撞体碰撞后,只有延迟半秒或者几百毫秒之后才能修改他的位置,或者销毁或者碰撞体大小)
- var bc= this.bottonXian.getComponent(BoxCollider2D);
- bc.size=new Size(10,10);
- bc.apply();
- }
34 节点顺时针旋转(这是Node节点)
- angle:number;
-
- update(deltaTime: number) {
- this.angle=this.angle+1;
- if(this.angle>=360){
- this.angle=0;
- }
- this.bottonXian11.angle= -this.angle;
- }
35触摸随之移动
更改触摸改变的x和y的变量,没有进行世界坐标的转换
- // 鼠标按下时候触发
- this.node.on(Node.EventType.TOUCH_START , (event) => {
- console.log('当手指触点落在目标节点区域内时');
-
- }, this);
- // 松开时候
- this.node.on(Node.EventType.TOUCH_MOVE , (event) => {
- let delta=event.getDelta();
- var pos=this.node.getPosition();
- pos.x=pos.x+delta.x;
- pos.y=pos.y+delta.y;
- this.node.setPosition(pos);
- }, this);
36 接收多个同类型的节点Ts
- @property({type:[Label]})
- numLabel = []
37两个同是静态的刚体 不会触发碰撞监听,如果想要手动拖动刚体与另一个静态的刚体监听碰撞
可以将手拖动的刚体改成动态的,然后重力改成0就行了
37.获取屏幕的实际宽高
view.getVisibleSize()
38.修改节点位移
bgView.position=v3(20,20,0);
39缓存数据到本地
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。