cocos2dX改变锚点位置

改变锚点时,同过计算偏移量修正position从而保持CCNode在屏幕上的位置不变

 1 void CLayer::change_anchorpoint(CCNode* node,CCPoint newpt)
 2 {
 3     float dx, dy, diffx, diffy, height, width;
 4     width = node->getContentSize().width;
 5     height = node->getContentSize().height;
 6
 7     diffx = (newpt.x - node->getAnchorPoint().x)*width;
 8     diffy = (newpt.y - node->getAnchorPoint().y)*height;
 9     node->setPositionX(node->getPositionX() + diffx);
10     node->setPositionY(node->getPositionY() + diffy);
11     node->setAnchorPoint(newpt);
12 }

newpt为新锚点的位置

时间: 2024-10-11 05:21:20

cocos2dX改变锚点位置的相关文章

cocos2d-x中锚点设置及定位方式

问题 在cocos2d演示样例代码HelloCpp中,为什么要将CCMenu设置位置到CCPointZero,即使CCMenu的锚点是在(0.5, 0.5)? 回答 这是由于CCMenu没有使用锚点进行坐标定位,而是使用的坐标原点.也就是说,CCMenu的坐标原点放到了其父节点的坐标原点. 延伸 不光是CCMenu没有使用锚点定位,像CCLayer,CCScene都没有使用锚点定位.详细设定是在构造函数中设计标记m_bIgnoreAnchorPointForPosition = true;下表描

ios动态获得键盘高度,并改变对话框的位置

NSNotificationCenter:键盘出现.消失时的通知 UIKeyboardWillShowNotification;UIKeyboardDidShowNotification;UIKeyboardWillHideNotification;UIKeyboardDidHideNotification; 在要使用键盘的视图控制器中(既viewDidLoad中),接收键盘事件的通知: - (void) registerForKeyboardNotifications{ //键盘改变时候会调用

【改变mysql 日志位置Bug】Could not use mysql.log for logging (error 13)

今天手贱,看到mysql 的日志在/var/log/mysql下面.总是觉得别扭,于是就想改变日志的位置, 本人开发环境 vagrant  + ubuntu12.04 ,在/etc/mysql/mysql中修改了general_log的位置,放在/data/logs/mysql下面 然后重启服务,service mysql restart 查看错误日志发现说 /usr/sbin/mysqld: File '/data/logs/mysql/mysql.log' not found (Errcod

android 动态改变控件位置和大小 .

动态改变控件位置的方法: setPadding()的方法更改布局位置. 如我要把Imageview下移200px: ImageView.setPadding( ImageView.getPaddingLeft(),  ImageView.getPaddingTop()+200, ImageView.getPaddingRight(),  ImageView.getPaddingBottom()); 动态改变控件大小的方法: 1.声明控件参数获取对象 LayoutParams lp: 2.获取控件

Delphi中运行时改变panel的位置及大小(通过wm_SysCommand来实现)

procedure TForm1.pnl1MouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);begin  ReleaseCapture;SendMessage(pnl1.Handle,wm_SysCommand,$F012,0);//改变位置//ReleaseCapture;//SendMessage(pnl1.Handle,wm_SysCommand,$F008,0);//改

cocos2d-x AnchorPoint锚点

锚点是定位和变换操作的一个重点.锚点我们能够看成用一根图钉将一张纸或者相片钉在墙上的那个点. 节点的位置是由我们设置的position和anchor point一起决定的. 值得一提的是,anchor point的默认位置Layer的是左下,而其它的node是中点. 节点的原点是父节点的左下角. CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200); CCLayer* layer2 = CCLayerColor::

通过transform属性改变图片的位置大小等信息

对UIImageView的位置大小方向的改变可以通过改变其transform属性值实现. 位置改变: var transform = CGAffineTransformMakeTranslation(50, 50) imgScenery.transform = transform 缩放: let transform = CGAffineTransformMakeScale(2, 2)  //高宽各缩放两倍 imgScenery.transform = transform 旋转: let tran

Delphi中运行时改变panel的位置及大小(WM_SysCommand消息配合参数使用,很奇妙) good

procedure TForm1.pnl1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(pnl1.Handle,wm_SysCommand,$F012,0);//改变位置 //ReleaseCapture; //SendMessage(pnl1.Handle,wm_SysCommand,$F008,0);/

安装好的mysql改变数据库文件位置

Linux系统: linux下,MySQL默认的数据文档存储目录为/var/lib/mysql.假如要把MySQL目录移到/home/data下需要进行下面几步: 1.home目录下建立data目录 cd /home mkdir data 2.把MySQL服务进程停掉: mysqladmin -u root -p shutdown 3.把/var/lib/mysql整个目录移到/home/data mv /var/lib/mysql /home/data/ 这样就把MySQL的数据文档移动到了/