[cocos2d-lua] 第三方库集成之-coil

coil 库介绍:

A tiny cooperative threading module for Lua. Coil is based around coroutines, allowing many cooperative threads to run simultaneously.

类似 Dorothy 中的 Routine

集成代码:

    coil = require "coil"
    coil.add(function()
        for i = 1,5 do
            print("hello")
            coil.wait(1) // wait 1s
        end
    end)

    local sharedScheduler = cc.Director:getInstance():getScheduler()
    sharedScheduler:scheduleScriptFunc(function(dt) coil.update(dt) end, 0, false)

最后你应该可以写出这样的代码:

// Jin死了
function Trig_JinDie_Actions takes nothing returns nothing  
    // 等待Jin的死亡动画播放3秒钟
    call TriggerSleepAction( 3.00 )
    // 如果满足Jin无法复活的条件
    if ( Trig_JinDie_Func003C() ) then
        // 玩家游戏失败,并显示TRIGSTR_3047代表的字符串
        call CustomDefeatBJ( Player(0), "TRIGSTR_3047" )
    else
        // 设置DaPu的英雄等级降低1级
        call SetHeroLevelBJ( udg_MenT[3], ( GetHeroLevel(udg_MenT[3]) - 1 ), false )
        // 添加一个吸血药水的特效给DaPu模型的origin骨骼点
        call AddSpecialEffectTargetUnitBJ( "origin", udg_MenT[3], "Abilities\\Spells\\Items\\VampiricPotion\\VampPotionCaster.mdl" )
        // 保存DaPu身上的特效
        set udg_SoulLinkEffect[3] = GetLastCreatedEffectBJ()
        // 等待吸血药水的特效播放2秒钟
        call TriggerSleepAction( 2 )
        // 销毁特效
        call DestroyEffectBJ( udg_SoulLinkEffect[3] )
        // 获得Jin的位置
        set udg_MenTStand[2] = GetUnitLoc(udg_MenT[2])
        // 复活Jin
        call ReviveHeroLoc( udg_MenT[2], udg_MenTStand[2], true )
        // 设置Jin的生命为33%
        call SetUnitLifePercentBJ( udg_MenT[2], 33.00 )
        // 删除Jin的位置对象防止内存泄露
        call RemoveLocation( udg_MenTStand[2] )
    endif
endfunction  

你可能感兴趣的:([cocos2d-lua] 第三方库集成之-coil)