lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 8281|回复: 4
打印 上一主题 下一主题

如何设置旋转中心

[复制链接]

46

主题

3

好友

1866

积分

偏将军

Rank: 4

跳转到指定楼层
楼主
发表于 2013-6-7 19:11:42 |只看该作者 |倒序浏览
LSprite中貌似是以最左上角那一点进行旋转,但是怎么设置为以中心点为旋转点呢?
回复

使用道具 举报

2

主题

0

好友

52

积分

士兵

Rank: 1

沙发
发表于 2013-6-7 23:14:05 |只看该作者
  呵呵 一起关注
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

板凳
发表于 2013-6-9 22:56:40 |只看该作者
在设定rotate的值之前,调用一下getRotateXY函数就可以了,这个函数本来是为LBox2d提供的,和物理引擎相结合的时候,旋转刚体必须是和Box2d中相一致,正好这里可以拿来用一用

用法很简单,getRotateXY函数需要两个参数,就是模拟的长和高,中心会设置为你所传入的参数的一半,看代码
  1. init(50,"legend",480,800,main);
  2. function main(){
  3.         var backLayer = new LSprite();
  4.         addChild(backLayer);
  5.        
  6.         var imgLayer01 = new LSprite();
  7.         backLayer.addChild(imgLayer01);
  8.         imgLayer01.x = imgLayer01.y = 100;
  9.         imgLayer01.graphics.drawRect(2,"#000000",[0,0,50,100]);
  10.        
  11.         var imgLayer11 = new LSprite();
  12.         backLayer.addChild(imgLayer11);
  13.         imgLayer11.x = imgLayer11.y = 100;
  14.         imgLayer11.graphics.drawRect(2,"#ff0000",[0,0,50,100]);
  15.         imgLayer11.rotate = 45;
  16.        
  17.        
  18.         var imgLayer02 = new LSprite();
  19.         backLayer.addChild(imgLayer02);
  20.         imgLayer02.x = imgLayer02.y = 200;
  21.         imgLayer02.graphics.drawRect(2,"#000000",[0,0,50,100]);
  22.        
  23.         var imgLayer12 = new LSprite();
  24.         backLayer.addChild(imgLayer12);
  25.         imgLayer12.x = imgLayer12.y = 200;
  26.         imgLayer12.graphics.drawRect(2,"#ff0000",[0,0,50,100]);
  27.         imgLayer12.getRotateXY(imgLayer12.getWidth(),imgLayer12.getHeight());
  28.         imgLayer12.rotate = 45;
  29. }
复制代码
imgLayer01和imgLayer02分别作为旋转前的参照物,
imgLayer11和imgLayer12都设定了rotate为45度,不同的是imgLayer12设置的时候,调用了getRotateXY函数,设置了旋转中心。
下面是测试连接,你可以看一下,imgLayer12被设置了旋转中心了
http://lufylegend.com/demo/test/6.html
不回答与技术和引擎不相关的问题
回复

使用道具 举报

2

主题

0

好友

52

积分

士兵

Rank: 1

地板
发表于 2013-6-10 01:01:11 |只看该作者
  1. var imgLayer01 = new LSprite();
  2.     backLayer.addChild(imgLayer01);
  3.     imgLayer01.x = imgLayer01.y = 100;
  4.     imgLayer01.graphics.drawRect(2,"#F00",[0,0,50,100]);
  5.     imgLayer01.getRotateXY(imgLayer01.getWidth(),imgLayer01.getHeight());

  6. var vars = {
  7.                         x:imgLayer01.x,
  8.                         y:imgLayer01.y,
  9.                         rotate:180,
  10.                         ease:Sine.easeInOut

  11.         };
  12.         LTweenLite.to(imgLayer01,1,vars);
复制代码
呵呵 原来这么用也可以啊 能看到动画了
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

5#
发表于 2013-6-10 07:53:14 |只看该作者
elick 发表于 2013-6-10 01:01
呵呵 原来这么用也可以啊 能看到动画了

举一反三啊,哈哈
不回答与技术和引擎不相关的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-20 01:49 , Processed in 0.049626 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部