flash as3.0中int和Number的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flash as3.0中int和Number的区别相关的知识,希望对你有一定的参考价值。

区别是一个是整形,一个是浮点数,说白了,二者在内存中是不相同的,int是32位存储数据,而且是整数。而Number是六十四位数据,是小数(当然包括整数部分和小数部分)。 而且int的范围是从0到2^32,而Number要比这个大得多,整数部分是0到2^53小数部分不说了,要是以指数形式,范围更大。 参考技术A 通过 int 类可使用表示为 32 位带符号整数的数据类型。 int 类表示的值的范围是:-2,147,483,648 (-2^31) 到
2,147,483,647 (2^31-1)。

Number 是表示 IEEE-754 双精度浮点数的数据类型。 使用与 Number 类关联的方法和属性可以操作基元数值。 此类与 javascript 的 Number
类完全相同。
但 Number 类的属性是静态属性,这意味着无需对象就可以使用这些属性,因此您不需要使用构造函数。
Number 数据类型符合双精度 IEEE-754 标准。
需要使用浮点值时,Number 数据类型很有用。 Flash Player 处理 int 和 uint 数据类型比处理 Number
数据类型更高效,但当所需值的范围超过 int 和 uint 数据类型的有效范围时,Number 数据类型很有用。 Number 类可用于表示超出 int 和
uint 数据类型有效范围的整数值。 Number 数据类型可使用多达 53 位来表示整数值,而 int 和 uint 则只能使用 32 位。 Number
类型的变量的默认值为 NaN(非数字)。

uint 是 unsigned int 的缩写,表示无符号整数类型, 范围是 0到 2^32-1

总结的说来, int表示整数, uint表示正整数, Number可以表示的范围最大,而且可以表示小数
参考技术B 这个简单, -1,4,555,-27都是int 1.5,-10.72不是int. 但是这些数字都是number

在 Flash as3 中移动敌人

【中文标题】在 Flash as3 中移动敌人【英文标题】:Moving enemy in flash as3 【发布时间】:2014-05-20 10:50:04 【问题描述】:

所以我有一堆火球,我想知道如何移动这些物品来创建一个类似手套的游戏。我已经创建了阵列,里面装满了火球,但我似乎无法让它们移动。这是我创建的数组的样子:

for (var i:Number = 0; i < fireballs; i++) 
    var mcFireball :fireball = new fireball();
    this.addChild(mcFireball);
    mcFireball.x = Math.floor((Math.random() * location) + 100);
    mcFireball.y = Math.floor((Math.random() * location) + 100);
    mcFireball.scaleX = .5;
    mcFireball.scaleY = .5;
    array.push(mcFireball);

这就是我尝试移动它们的方式:

        for (var i :Number = 0; i < fireballs; i++) 
            if (array[i] == null) 
                trace("Error here");
                return;
            
            trace(array[i]);
            var mcFireball :fireball = array[i];
            mcFireball.moveEnemy();
        

这就是我的 moveEnemy() 的样子:

    public function moveEnemy():void
    
        if ((this.x + this.width > this.stage.stageWidth) || (this.x - this.width <= 0))
            _nEnemyMovementSpeed *= -1;         

        this.x += _nEnemyMovementSpeed;
    

我确定错误在函数的范围内,但我不确定我需要做什么才能使它们正常工作

My error is that moveEnemy() isn't a function

【问题讨论】:

【参考方案1】:

好吧,我困了,这不是我的想法(没有经过 Flash 测试),但它应该能给你一个大致的想法。

mcFireball.moveEnemy(); 导致错误,因为您试图通过说它是 mcFireball 类中的函数来达到它。为了更好地理解(示例):您有一个 Game_Stages.as 类文件,每个级别都是一个函数,因此要运行级别 5,您会说与您所拥有的类似.. Game_Stages.Level5();现在考虑 mcFireBall 是一个类文件吗?它有 moveEnemy 功能吗?看看 Flash 为什么会哭?

可能的解决方案

for (var i :Number = 0; i < fireballs; i++) 

            if (array[i] == null) 
             trace("Error here"); return; 

            trace(array[i]);
            var mcFireball :fireball = array[i];
            moveEnemy(mcFireball); //do moveEnemy func with mcFireball as input 
 

然后你可以像下面那样做moveEnemy。在这个函数中,我们现在引用与“fball

相同的输入
public function moveEnemy(fball:Sprite):void

        if ((fball.x + fball.width > this.stage.stageWidth) || (fball.x - fball.width <= 0))
         _nEnemyMovementSpeed *= -1;          

        else
        fball.x += _nEnemyMovementSpeed; 

这假设 mcFireball 是一个精灵(无论它是库对象还是由代码创建都应该可以工作)

【讨论】:

不用担心,很高兴为您提供帮助。

以上是关于flash as3.0中int和Number的区别的主要内容,如果未能解决你的问题,请参考以下文章

用flash CS4 as3.0编程实现元件以舞台中心为中心点缩放中遇到的问题,求指教。

flash as3.0获取外部视频总的时间长度 和视频已播放的时间长度

flash cs5 用as3.0给按钮加链接

高分求一个 flash as3.0的关于鼠标拖曳startDrag() 方法后 怎么获取拖曳后的坐标!!做凹透镜原理动画!

flash as3.0里怎样修改元件的缩放中心点,让缩放的中心点一直在舞台中心位置?

flash as3.0 图片自动添加