2011-04-09 66 views
0

我想使用我自己绘制的数字来表示数字,但不知道如何实现这一点。我将如何显示与这些数字相等的整数?如果有必要让它们处于平铺模式,这对我考虑老年游戏的工作原理是有意义的,那么我将使用哪些代码在每个代码之间切换?还是有另一种更好的方法?此外,我需要的数字能够调整到数字中的位数并从左到右阅读(所以10中的1将与1中的1位于同一位置)。谢谢你的帮助。使用矢量绘制的数字

回答

0

你可以很容易地使用sprite sheet。只需对齐你的数字从0到9,并保持一个数组与精灵上的每个数字的位置(a[0] = 0, a[1] = 200, a[2] = 350),那么你将能够像这样检索精灵的位置和宽度:

//for 1 
xPosition = a[1]; 
width = a[2]-a[1]; 

您可以使用这两个来绘制一个蒙版,并隐藏其余的精灵,以便只显示所需的数字。你只能通过这种方式获得一个数字。但是,将所有这些放在一个类中,并对您需要的位数进行循环。这就是你如何找出一个数字有多少个数字:

var value:Number 
var digitsNumber:Number =Math.ceil(Math.log(value)/Math.LN10) + 1; 

这里值是你的'数字',例如。 234,23132 4334等

0

通过switch/case语句来运行这些数字将非常简单。不是所有的高效率,你要知道,但肯定会工作...

private function getCustomInt(targetInt:int):DisplayObject 
{ 
    var graphic:DisplayObject;  
    switch(targetInt) 
    { 
     case 0: 
      graphic = new Zero(); //link to your embedded sprite/ mc /whatever 
      break; 
     case 1: 
      graphic = new One(); 
      break; 
     //etc etc 
    } 

    return graphic; 
} 

如果这是一个精灵表的一部分,你可以只设置在一个父项有scrollRect的正确设置子图形的位置向上。无论如何。一堆方法来做到这一点 - 这将是一个 - - -

+0

我需要一些可以管理大数字,甚至数以千计的东西。如果我理解你的样本,我必须为每个数字制作一个新图形。 – Anonymous 2011-04-09 22:42:02

+0

nope - 只是0-9。当你去显示你的值时,把它分解成一个数组并通过这个函数传递每个索引。应该很容易实现.... – Bosworth99 2011-04-10 05:49:23

+0

@mindnoise解释了如何设置一个精灵表非常好,btw ... – Bosworth99 2011-04-10 05:53:35