lufy's legend

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

怎么取一个移动层的座标

[复制链接]

1

主题

0

好友

11

积分

士兵

Rank: 1

跳转到指定楼层
楼主
发表于 2016-11-21 15:19:15 |只看该作者 |倒序浏览
本帖最后由 anyi2000 于 2016-11-21 15:34 编辑

做一个赛车类游戏,场景如下:
sdfsfdsdf
  1. init(30, "legend", 700, 500, main);
  2. /**层变量*/
  3. var loadingLayer,     //进度层
  4.     backLayer,        //底层
  5.     trackLayer,       //赛道层
  6.     trackSideLayer,   //赛道边层
  7.     carLayer0 = new LSprite(), //赛车层
  8.     carLayer1 = new LSprite(),
  9.     carLayer2 = new LSprite(),
  10.     carLayer3 = new LSprite(),
  11.     carLayer4 = new LSprite(),
  12.     carLayer5 = new LSprite(),
  13.     carLayer6 = new LSprite(),
  14.     carLayer7 = new LSprite(),
  15.     carLayer8 = new LSprite(),
  16.     carLayer9 = new LSprite(),
  17.     loadIndex = 0,    //进度条位置

  18.     /**数组变量*/
  19.     //赛车图层
  20.     carList = [carLayer0,carLayer1,carLayer2,carLayer3,carLayer4,carLayer5,carLayer6,carLayer7,carLayer8,carLayer9],
  21.     //赛车座标、缩放比例
  22.     carAxis =
  23.     {'car':
  24.          [
  25.             {'axisX':'625','axisY':'162','scaleX':'0.5','scaleY':'0.5','width':'30','height:':'30'},
  26.             {'axisX':'615','axisY':'182','scaleX':'0.55','scaleY':'0.55'},
  27.             {'axisX':'606','axisY':'202','scaleX':'0.6','scaleY':'0.6'},
  28.             {'axisX':'600','axisY':'225','scaleX':'0.61','scaleY':'0.61'},
  29.             {'axisX':'595','axisY':'248','scaleX':'0.62','scaleY':'0.62'},
  30.             {'axisX':'589','axisY':'271','scaleX':'0.63','scaleY':'0.63'},
  31.             {'axisX':'584','axisY':'295','scaleX':'0.64','scaleY':'0.64'},
  32.             {'axisX':'580','axisY':'319','scaleX':'0.65','scaleY':'0.65'},
  33.             {'axisX':'572','axisY':'344','scaleX':'0.7','scaleY':'0.7'},
  34.             {'axisX':'555','axisY':'371','scaleX':'0.8','scaleY':'0.8'}
  35.          ],
  36.     'wheels':
  37.         {
  38.             '0':[
  39.                   {'axisX':'637','axisY':'171','scaleX':'0.5','scaleY':'0.5'},
  40.                   {'axisX':'628','axisY':'192','scaleX':'0.55','scaleY':'0.55'},
  41.                   {'axisX':'620','axisY':'213','scaleX':'0.6','scaleY':'0.6'},
  42.                   {'axisX':'615','axisY':'236','scaleX':'0.61','scaleY':'0.61'},
  43.                   {'axisX':'610','axisY':'260','scaleX':'0.62','scaleY':'0.62'},
  44.                   {'axisX':'604','axisY':'283','scaleX':'0.63','scaleY':'0.63'},
  45.                   {'axisX':'599','axisY':'307','scaleX':'0.64','scaleY':'0.64'},
  46.                   {'axisX':'595','axisY':'331','scaleX':'0.65','scaleY':'0.65'},
  47.                   {'axisX':'588','axisY':'356','scaleX':'0.7','scaleY':'0.7'},
  48.                   {'axisX':'574','axisY':'385','scaleX':'0.8','scaleY':'0.8'}
  49.                ],
  50.             '1':[
  51.                   {'axisX':'680','axisY':'171','scaleX':'0.5','scaleY':'0.5'},
  52.                   {'axisX':'676','axisY':'192','scaleX':'0.55','scaleY':'0.55'},
  53.                   {'axisX':'672','axisY':'213','scaleX':'0.6','scaleY':'0.6'},
  54.                   {'axisX':'667','axisY':'236','scaleX':'0.61','scaleY':'0.61'},
  55.                   {'axisX':'664','axisY':'260','scaleX':'0.62','scaleY':'0.62'},
  56.                   {'axisX':'658','axisY':'283','scaleX':'0.63','scaleY':'0.63'},
  57.                   {'axisX':'654','axisY':'307','scaleX':'0.64','scaleY':'0.64'},
  58.                   {'axisX':'651','axisY':'331','scaleX':'0.65','scaleY':'0.65'},
  59.                   {'axisX':'649','axisY':'356','scaleX':'0.7','scaleY':'0.7'},
  60.                   {'axisX':'643','axisY':'385','scaleX':'0.8','scaleY':'0.8'}
  61.                ]
  62.         },
  63.     'trackBg':{'axisX':'0','axisY':'150'},
  64.     'trackSideBg':{'axisX':'0','axisY':'80'}

  65.     }

  66.     imgList = {},     //存储图片数组
  67.     //图片数组
  68.     imgData =
  69.     [
  70.         {name : "trackBg",path : "/static/images/track_bg.png"},
  71.         {name : "trackSide",path : "/static/images/track_side_bg.png"},
  72.         {name : "car0",path : "/static/images/car_1.png"},
  73.         {name : "car1",path : "/static/images/car_2.png"},
  74.         {name : "car2",path : "/static/images/car_3.png"},
  75.         {name : "car3",path : "/static/images/car_4.png"},
  76.         {name : "car4",path : "/static/images/car_5.png"},
  77.         {name : "car5",path : "/static/images/car_6.png"},
  78.         {name : "car6",path : "/static/images/car_7.png"},
  79.         {name : "car7",path : "/static/images/car_8.png"},
  80.         {name : "car8",path : "/static/images/car_9.png"},
  81.         {name : "car9",path : "/static/images/car_10.png"},
  82.         {name : "carWheel",path : "/static/images/car_wheel.png"},
  83.         {name : "carShadow",path : "/static/images/car_shadow.png"}
  84.     ];
  85. //初始化
  86. function gameInit(event){
  87.   //图层显示初始化
  88.   layerInit();
  89.   addTrackSide();
  90.   //添加赛道
  91.   addTrack();
  92.   //添加赛车
  93.   addCar();
  94.   addCarWheels();
  95.   mover(carList);
  96.   // startMover(carList);
  97. }

  98. function main(){
  99.     //实例化进度条层  
  100.     loadingLayer = new LSprite();  
  101.     loadingLayer.graphics.drawRect(1,"black",[50, 200, 200, 20],true,"#ffffff");  
  102.     addChild(loadingLayer);
  103.     loadImage()
  104. }

  105. function loadImage(){  
  106.     //图片全部读取完成,开始初始化游戏
  107.     if(loadIndex >= imgData.length){
  108.         removeChild(loadingLayer);  
  109.         gameInit();  
  110.         return;  
  111.     }  
  112.     //开始读取图片  
  113.     loader = new LLoader();  
  114.     loader.addEventListener(LEvent.COMPLETE,loadComplete);
  115.     loader.load(imgData[loadIndex].path,"bitmapData");  
  116. }

  117. function loadComplete(event){  
  118.     //进度条显示  
  119.     loadingLayer.graphics.clear();  
  120.     loadingLayer.graphics.drawRect(1,"black",[300, 100, 100, 2],true,"#ffffff");  
  121.     loadingLayer.graphics.drawRect(1,"black",[300, 100, 100*(loadIndex/imgData.length), 1],true,"#000000");  
  122.     //储存图片数据  
  123.     imgList[imgData[loadIndex].name] = loader.content;  
  124.     //读取下一张图片  
  125.     loadIndex++;  
  126.     loadImage();  
  127. }

  128. //图层显示初始化
  129. function layerInit(){
  130.   //底层添加
  131.   backLayer = new LSprite();
  132.   addChild(backLayer);
  133.   var bitmapdata = new LBitmapData("#000", 0, 0, 700, 500);
  134.   var bitmap = new LBitmap(bitmapdata);
  135.   backLayer.addChild(bitmap);
  136.   //赛道层添加
  137.   trackLayer = new LSprite();
  138.   backLayer.addChild(trackLayer);
  139.   //
  140.   trackSideLayer = new LSprite();
  141.   backLayer.addChild(trackSideLayer);
  142.   //添加辆车层
  143.   for(var i in carList){
  144.     backLayer.addChild(carList[i]);
  145.   };
  146. }
  147. //赛道边沿
  148. function addTrackSide(){
  149.     bitmapdata = new LBitmapData(imgList['trackSide']);
  150.     trackSide = new LBitmap(bitmapdata);
  151.     trackSide.x = carAxis['trackSideBg']['axisX'];
  152.     trackSide.y = carAxis['trackSideBg']['axisY'];
  153.     trackSideLayer.addChild(trackSide);   
  154. }

  155. //赛道 添加
  156. function addTrack(){
  157.     bitmapdata = new LBitmapData(imgList['trackBg']);
  158.     trackBg = new LBitmap(bitmapdata);
  159.     trackBg.x = carAxis['trackBg']['axisX'];
  160.     trackBg.y = carAxis['trackBg']['axisY'];   
  161.     trackLayer.addChild(trackBg);
  162. }
  163. //赛车 添加
  164. function addCar(){
  165.   for(var i in carAxis['car']){
  166.     var bitmapdata = new LBitmapData(imgList['car'+i]);
  167.     var bitmap = new LBitmap(bitmapdata);
  168.     bitmap.x = carAxis['car'][i]['axisX'];
  169.     bitmap.y = carAxis['car'][i]['axisY'];
  170.     bitmap.scaleX = carAxis['car'][i]['scaleX'];
  171.     bitmap.scaleY = carAxis['car'][i]['scaleY'];

  172.     carList[i].addChild(bitmap);
  173.     console.log(carList[i].getBounds());
  174.   };
  175. }
  176. //添加车轮
  177. function addCarWheels(){
  178.   for(var i=0;i<carList.length;i++){
  179.     for(var j in carAxis['wheels']){
  180.         var bitmapdata = new LBitmapData(imgList['carWheel']);
  181.         var bitmap = new LBitmap(bitmapdata);
  182.         bitmap.x = carAxis['wheels'][j][i]['axisX'];
  183.         bitmap.y = carAxis['wheels'][j][i]['axisY'];
  184.         bitmap.scaleX = carAxis['wheels'][j][i]['scaleX'];
  185.         bitmap.scaleY = carAxis['wheels'][j][i]['scaleY'];
  186.         carList[i].addChild(bitmap);
  187.     }
  188.   }
  189. }

  190. //循环移动
  191. function mover(obj){
  192.     var Timers = setTimeout(function(){
  193.         // LTweenLite.to(obj[$car],1,{x:-100,loop:false,ease:LEasing.Sine.easeInOut}).to(obj[$car],1,{x:-400,ease:LEasing.Quad.easeInOut});
  194.         for (var i = 0; i < carList.length; i++) {
  195.             // countSpeed(carList[i]);
  196.             // console.log(carList[i].getWidth())
  197.         }  
  198.     },500+(Math.floor(Math.random()*(6000-2000)))||300)
  199. }

  200. //开始移动
  201. function startMover(obj){
  202.   for(var i = 0; i < obj.length; i++){
  203.     LTweenLite.to(obj[i],1,{x:0,loop:true,ease:LEasing.Sine.easeInOut}).to(obj[i],1,{x:-300,ease:LEasing.Quad.easeInOut});
  204.   }
  205. }
  206. //背景移动
  207. function bgMover(obj){

  208. }
  209. //加速度
  210. function countSpeed(obj,Curreent,Prev,callBack){
  211.     console.log(obj.getWidth())

  212. }
复制代码
1、当赛车层移动时我怎么实时取得移动后的座标?因为我需要一个加速的效果。
2、  console.log(carList
.getWidth());//这里调试出来的赛车层宽度为什么不是赛车图片的宽度?图层不是跟里面图片适应大小吗?



回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

沙发
发表于 2016-11-21 15:54:34 |只看该作者
对象坐标就是x,y,你直接获取不行吗?
carList[i].getWidth()取到的宽度,是carList[i]里所有子对象从最左边到最右边的宽度,如果里面只有一个图片,那肯定就是这个图片的宽度,如果是多个的话,那就不一定了,而且我看你加入子项的时候,还缩放了,那最后的大小肯定就是缩放后的数值了
不回答与技术和引擎不相关的问题
回复

使用道具 举报

1

主题

0

好友

11

积分

士兵

Rank: 1

板凳
发表于 2016-11-21 16:54:30 |只看该作者
lufy 发表于 2016-11-21 15:54
对象坐标就是x,y,你直接获取不行吗?
carList.getWidth()取到的宽度,是carList里所有子对象从最左边到最 ...

我的意思是赛车图层移动后的当前座标。移动以后它们的x,y值怎么取。

还有就是console.log(carList.getWidth())得出的是下面的值:
62572
61579.2
60686.4
60087.84
202 59589.28
58990.72
58492.16
58093.6
572100.8
555115.2

这样的数值明显大很多。很疑惑。谢谢解答!
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

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

地板
发表于 2016-11-21 17:47:22 |只看该作者
anyi2000 发表于 2016-11-21 16:54
我的意思是赛车图层移动后的当前座标。移动以后它们的x,y值怎么取。

还有就是console.log(carList.getWi ...

首先不该是
  1. carList[i].getWidth()
复制代码
吗?
另外,
  1. carList[i]
复制代码
里装的就是个汽车吗?
  1. var bitmapdata = new LBitmapData(imgList['car'+i]);
  2.     var bitmap = new LBitmap(bitmapdata);
  3.     bitmap.x = carAxis['car'][i]['axisX'];
  4.     bitmap.y = carAxis['car'][i]['axisY'];
  5.     bitmap.scaleX = carAxis['car'][i]['scaleX'];
  6.     bitmap.scaleY = carAxis['car'][i]['scaleY'];
复制代码
这个bitmap才是真正的汽车吧?

引擎里绘制对象,都是通过他的x,y坐标来绘制的,他们的当前坐标就是x,y啊,你只要知道对象,直接用它们的x,y就是它们的位置,这个有疑问?
不回答与技术和引擎不相关的问题
回复

使用道具 举报

1

主题

0

好友

11

积分

士兵

Rank: 1

5#
发表于 2016-11-21 19:16:22 |只看该作者
lufy 发表于 2016-11-21 17:47
首先不该是吗?
另外,里装的就是个汽车吗?这个bitmap才是真正的汽车吧?

非常感谢。我终于明白了。
回复

使用道具 举报

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

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

Archiver|lufy's legend

GMT+8, 2024-5-9 02:35 , Processed in 0.051942 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部