数组as3冲突有助于编码

托尼·桑托斯(Tony Santos)

我在这里需要一些帮助,因为它的“未定义”,所以我无法进行碰撞,我想我需要进行阵列检查以进行检查,但是我从未做过它需要帮助:/在这里遇到一些困难,尝试了一些阵列,但是没有成功在javascript上需要帮助的人非常感谢任何帮助的人

/* Código que pára a timeline na 1 frame para que o menu continue apresentado*/
stop();
/*Movimenta a nave fazendo a seguir os movimentos do rato e esconde o cursor do sistema operacional*/

stage.addChild(arma_tiro);
arma_tiro.mouseEnabled = false;
arma_tiro.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor);

function fl_CustomMouseCursor(event:Event)
{
    arma_tiro.x = stage.mouseX;
}
Mouse.hide();


/* Mouse Click Event
Clicking on the specified symbol instance executes a function in which you can add your own custom code.

Instructions:
1. Add your custom code on a new line after the line that says "// Start your custom code" below.
The code will execute when the symbol instance is clicked.
*/

stage.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler_3);

function fl_MouseClickHandler_3(event:MouseEvent):void
{


    var bullet:bullet_ = new bullet_();
    addChild(bullet);
    bullet.x=arma_tiro.x;
    bullet.y=arma_tiro.y;
    bullet.addEventListener(Event.ENTER_FRAME, moverbala);

}

function moverbala(event:Event):void // função para mover a bala para cima */
{
    event.target.y=event.target.y-20;
}

//stage.addEventListener(Event.ENTER_FRAME, Primeira);

setInterval(Primeira, 1000) ; //define intervalo de tempo entre as varias repetiçoes da funçao
function Primeira(){  //funçao de spawn de nave 1

    var invader1:invader_1 = new invader_1();
    addChild(invader1);
    invader1.x=0;
    invader1.y=15;
    invader1.addEventListener(Event.ENTER_FRAME, mover1);
} 

function mover1(event:Event):void // função para mover a nave para lado direito */
{
    event.target.x+=10;
}

//Nave 2

setInterval(Segunda, 1000) ; //define intervalo de tempo entre as varias repetiçoes da funçao
function Segunda(){  //funçao de spawn de nave 1

    var invader2:invader_2 = new invader_2();
    addChild(invader2);
    invader2.x=0;
    invader2.y=45;
    invader2.addEventListener(Event.ENTER_FRAME, mover2);
} 

function mover2(event:Event):void // função para mover a nave para lado direito */
{
    event.target.x+=10;
}

//Nave 3

setInterval(Terceira, 1000) ; //define intervalo de tempo entre as varias repetiçoes da funçao
function Terceira(){  //funçao de spawn de nave 1

    var invader3:invader_3 = new invader_3();
    addChild(invader3);
    invader3.x=0;
    invader3.y=85;
    invader3.addEventListener(Event.ENTER_FRAME, mover3);
} 

function mover3(event:Event):void // função para mover a nave para lado direito */
{
    event.target.x+=10;
}

if (bullet.hitTestObject(invader1))
        {
            //Remove bullet and enemy
            removeChild(bullet);
            removeChild(invader1);

        }
本杰明·布菲尔(Benjamin BOUFFIER)

看来bullet_是类而不是实例,所以您可以在其上调用hitTestObject。也许尝试用bullet替换bullet_。

有很多解决方案,但对我来说最简单的方法是保留2个阵列,一个用于子弹,一个用于敌人。

因此添加数组:

// create the array for the bullets
bullets  :Array = [];
// create the array for the enemies
enemies :Array = [];

在每个帧上添加一个onEnterFrame事件侦听器以进行测试和游戏逻辑:

addEventListener( Event.ENTER_FRAME, _gameLoop );

更改功能以创建子弹和敌人:

function fl_MouseClickHandler_3( event:MouseEvent ):void
{
    // create the bullet
    var bullet:bullet_ = new bullet_();
    addChild(bullet);
    bullet.x=arma_tiro.x;
    bullet.y=arma_tiro.y;

    // add the bullet to the bullets array
    bullets.push( bullet );
}

function Primeira():void
{
    var invader1:invader_1 = new invader_1();
    addChild(invader1);
    invader1.x=0;
    invader1.y=15;

    enemies.push( invader1 );
}

function Segunda():void
{
    var invader2:invader_2 = new invader_2();
    addChild(invader2);
    invader2.x=0;
    invader2.y=45;

    enemies.push( invader2 );
} 

function Terceira():void
{
    var invader3:invader_3 = new invader_3();
    addChild(invader3);
    invader3.x=0;
    invader3.y=85;

    enemies.push( invader3 );
} 

现在创建游戏循环功能:

function _gameLoop(e:Event):void
{
    var firstLoop:Boolean = true;

    // loop to move/remove the bullets
    for( var a:int = bullets.length-1; a>=0; a-- )
    {
        bullets[a].y -= 20;
        // if the bullet is not on screen anymore, remove it from array
        if( bullets[j].y < 0 )
        { 
            removeChild( bullet[a] );
            bullets.splice(a,1);
            continue;
        }
    }

    // loop enemies
    for( var i:int = enemies.length-1; i>=0; i-- )
    {
        // move the enemy
        enemies[i].x += 10;
        // loop the bullets to see if on collide the enemy
        for( var j:int = bullets.length-1; j>=0; j-- )
        {
            // test collision with the enemy
            if( enemies[i].hitTestObject( bullets[j] )
            {
                // make your enemy dead
                removeChild( enemies[i] );
                // remove it from the array
                enemies.splice(i,1);
            }
        }
    }
}

希望这可以帮助您

本文收集自互联网,转载请注明来源。

如有侵权,请联系debugcn@gmail.com 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有助于Google翻译的API

来自分类Dev

sqlite3数据库有助于提高性能和设计

来自分类Dev

PYMC3混合物模型:有助于理解多变量模型

来自分类常见问题

索引是否有助于sql选择排序性能?

来自分类Dev

基本的JavaScript对象结构有助于访问属性

来自分类Dev

线程有助于提高Java的效率吗?

来自分类Dev

TSQL查询有助于结构化结果

来自分类Dev

流浪汉如何有助于发展

来自分类Dev

与流有助于消除从文件扩展名

来自分类Dev

索引是否有助于sql选择排序性能?

来自分类Dev

哪些属性有助于LCD面板的质量?

来自分类Dev

合并有助于SQL中聚合的值

来自分类Dev

TSQL查询有助于结构化结果

来自分类Dev

Eclipse RCP:这是否有助于片段项目

来自分类Dev

Eclipse内容有助于Gradle依赖性

来自分类Dev

Redis复制是否有助于负载均衡?

来自分类Dev

线程化有助于提高Java的效率吗?

来自分类Dev

哪些方法有助于改善无线信号?

来自分类Dev

硬件是否有助于减少OS X的崩溃?

来自分类Dev

AsyncController方法声明,有助于理解语法

来自分类Dev

if语句有助于控制无人机

来自分类Dev

启用引导内容有助于日食

来自分类Dev

TLP是否真的有助于延长电池寿命?

来自分类Dev

制作有助于故障诊断的功能

来自分类Dev

xtext,内容有助于不必要的建议

来自分类Dev

嵌套循环是否有助于解析结果

来自分类Dev

如何比较数组与嵌套数组并打印匹配对,而不是匹配的值列表?(代码有助于说明)

来自分类Dev

是否有任何数学算法有助于良好的响应式html设计?

来自分类Dev

使用CSRF表单令牌是否有助于预防垃圾邮件?

Related 相关文章

热门标签

归档