Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÈçºÎ½« HTML5 ÐÔÄÜ·¢»Óµ½¼«ÖÂ
 
  3728  次浏览      28
  2018-7-20
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÍøÂ磬±¾ÎÄÖ÷ÒªÊÇÒÔLayaAirÒýÇæÎªÀý£¬Í¨¹ý´úÂëʾÀýÏêϸ²ûÊöÈçºÎÀûÓÃÒýÇæ¶ÔHTML5×÷³öÐÔÄܵļ«ÖÂÓÅ»¯¡£

HTML5×÷ΪÐÂÐËÁìÓòÔ½À´Ô½ÈÈ¡£È»¶øÔÚÒÆ¶¯É豸Ӳ¼þÐÔÄÜÈõÓÚPCµÄ±³¾°Ï£¬¶ÔÐÔÄܵÄÐèÇóÏԵøüÎªÖØÒª£¬¶øHTML5ÐÔÄÜÓÅ»¯Ç°ÓëÓÅ»¯ºóÓÐ׿«´óµÄ²î±ð£¬ÈçºÎÓÅ»¯²ÅÄÜÌá¸ßÐÔÄÜ£¬¶Ô´ËÊìÖªµÄÈ˺ÜÉÙ¡£±¾ÎÄÒÔLayaAirÒýÇæÎªÀý£¬Í¨¹ý´úÂëʾÀýÏêϸ²ûÊöÈçºÎÀûÓÃÒýÇæ¶ÔHTML5×÷³öÐÔÄܵļ«ÖÂÓÅ»¯¡£

Ö÷Ìâ°üÀ¨£º

´úÂëÖ´Ðлù±¾Ô­Àí

»ù×¼²âÊÔ

ÄÚ´æÓÅ»¯

ͼÐÎäÖȾÐÔÄÜ

¼õÉÙCPUʹÓÃÁ¿

ÆäËûÓÅ»¯²ßÂÔ

µÚ1½Ú£º´úÂëÖ´Ðлù±¾Ô­Àí

LayaAirÒýÇæÖ§³ÖAS3¡¢TypeScript¡¢JavaScriptÈýÖÖÓïÑÔ¿ª·¢£¬È»¶øÎÞÂÛÊDzÉÓÃÄÄÖÖ¿ª·¢ÓïÑÔ£¬×îÖÕÖ´ÐеͼÊÇJavaScript´úÂë¡£ËùÓп´µ½µÄ»­Ãæ¶¼ÊÇͨ¹ýÒýÇæ»æÖƳöÀ´µÄ£¬¸üÐÂÆµÂÊÈ¡¾öÓÚ¿ª·¢ÕßÖ¸¶¨µÄFPS£¬ÀýÈçÖ¸¶¨Ö¡ÆµÂÊΪ60FPS£¬ÔòÔËÐÐʱÿ¸öÖ¡µÄÖ´ÐÐʱ¼äΪÁùÊ®·ÖÖ®Ò»Ã룬ËùÒÔÖ¡ËÙÔ½¸ß£¬ÊÓ¾õÉϸоõÔ½Á÷³©£¬60Ö¡ÊÇÂúÖ¡¡£

ÓÉÓÚʵ¼ÊÔËÐл·¾³ÊÇÔÚä¯ÀÀÆ÷ÖУ¬Òò´ËÐÔÄÜ»¹È¡¾öÓÚJavaScript½âÊÍÆ÷µÄЧÂÊ£¬Ö¸¶¨µÄFPSÖ¡ËÙÔÚµÍÐÔÄܽâÊÍÆ÷ÖпÉÄܲ»»á´ïµ½£¬ËùÒÔÕⲿ·Ö²»ÊÇ¿ª·¢ÕßÄܹ»¾ö¶¨µÄ£¬¿ª·¢ÕßÄÜ×÷µÄÊǾ¡¿ÉÄÜͨ¹ýÓÅ»¯£¬ÔڵͶËÉ豸»òµÍÐÔÄÜä¯ÀÀÆ÷ÖУ¬ÌáÉýFPSÖ¡ËÙ¡£

LayaAirÒýÇæÔÚÿ֡¶¼»áÖØ»æ£¬ÔÚÐÔÄÜÓÅ»¯Ê±£¬³ýÁ˹Ø×¢Ã¿Ö¡Ö´ÐÐÂß¼­´úÂë´øÀ´µÄCPUÏûºÄ£¬»¹ÐèҪעÒâÿ֡µ÷ÓûæÍ¼Ö¸ÁîµÄÊýÁ¿ÒÔ¼°GPUµÄÎÆÀíÌá½»´ÎÊý¡£

µÚ2½Ú£º»ù×¼²âÊÔ

LayaAirÒýÇæÄÚÖõÄÐÔÄÜͳ¼Æ¹¤¾ß¿ÉÓÃÓÚ»ù×¼²âÊÔ£¬ÊµÊ±¼ì²âµ±Ç°ÐÔÄÜ¡£¿ª·¢Õß¿ÉÒÔʹÓÃlaya.utils.StatÀ࣬ͨ¹ýStat.show() ÏÔʾͳ¼ÆÃæ°å¡£¾ßÌå±àд´úÂëÈçÏÂÀýËùʾ£º

Stat.show(0,0); //AS3µÄÃæ°åµ÷ÓÃд·¨
Laya.Stat.show(0,0); //TSÓëJSµÄÃæ°åµ÷ÓÃд·¨

CanvasäÖȾµÄͳ¼ÆÐÅÏ¢£º

WebGLäÖȾµÄͳ¼ÆÐÅÏ¢£º

ͳ¼Æ²ÎÊýµÄÒâÒ壺

FPS£º

ÿÃë³ÊÏÖµÄÖ¡Êý(Êý×ÖÔ½¸ßÔ½ºÃ)¡£

ʹÓÃcanvasäÖȾʱ£¬ÃèÊö×Ö¶ÎÏÔʾΪFPS(Canvas)£¬Ê¹ÓÃWebGLäÖȾʱ£¬ÃèÊö×Ö¶ÎÏÔʾΪFPS(WebGL)¡£

Sprite£º

äÖȾ½ÚµãÊýÁ¿£¨Êý×ÖÔ½µÍÔ½ºÃ£©¡£

Spriteͳ¼ÆËùÓÐäÖȾ½Úµã£¨°üÀ¨ÈÝÆ÷£©£¬Õâ¸öÊý×ֵĴóС»áÓ°ÏìÒýÇæ½Úµã±éÀú£¬Êý¾Ý×éÖ¯ºÍäÖȾµÄ´ÎÊý¡£

DrawCall£º

DrawCallÔÚcanvasºÍWebGLäÖȾÏ´ú±í²»Í¬µÄÒâÒ壨ԽÉÙÔ½ºÃ£©¡£

Canvasϱíʾÿ֡µÄ»æÖÆ´ÎÊý£¬°üÀ¨Í¼Æ¬¡¢ÎÄ×Ö¡¢Ê¸Á¿Í¼¡£¾¡Á¿ÏÞÖÆÔÚ100֮ϡ£

WebGLϱíʾäÖȾÌá½»Åú´Î£¬Ã¿´Î×¼±¸Êý¾Ý²¢Í¨ÖªGPUäÖȾ»æÖƵĹý³Ì³ÆÎª1´ÎDrawCall£¬ÔÚÿ1´ÎDrawCallÖгýÁËÔÚ֪ͨGPUµÄäÖȾÉϱȽϺÄʱ֮Í⣬Çл»²ÄÖÊÓëshaderÒ²ÊǷdz£ºÄʱµÄ²Ù×÷¡£ DrawCallµÄ´ÎÊýÊǾö¶¨ÐÔÄܵÄÖØÒªÖ¸±ê£¬¾¡Á¿ÏÞÖÆÔÚ100֮ϡ£

Canvas£º

Èý¸öÊýÖµ ¡ª¡ª Ã¿Ö¡ÖØ»æµÄ»­²¼ÊýÁ¿ / »º´æÀàÐÍΪ¡°normal¡±ÀàÐ͵Ļ­²¼ÊýÁ¿ / »º´æÀàÐÍΪ¡°bitmap¡±ÀàÐ͵Ļ­²¼ÊýÁ¿¡±¡£

CurMem£º½öÏÞWebGLäÖȾ£¬±íʾÄÚ´æÓëÏÔ´æÕ¼Óã¨Ô½µÍÔ½ºÃ£©¡£

Shader£º½öÏÞWebGLäÖȾ£¬±íʾÿ֡ShaderÌá½»´ÎÊý¡£

ÎÞÂÛÊÇCanvasģʽ»¹ÊÇWebGLģʽ£¬ÎÒÃǶ¼ÐèÒªÖØµã¹Ø×¢DrawCall£¬Sprite£¬CanvasÕâÈý¸ö²ÎÊý£¬È»ºóÕë¶ÔÐԵؽøÐÐÓÅ»¯¡££¨²Î¼û¡°Í¼ÐÎäÖȾÐÔÄÜ¡±£©

µÚ3½Ú£ºÄÚ´æÓÅ»¯

¶ÔÏó³Ø

¶ÔÏ󳨣¬Éæ¼°µ½²»¶ÏÖØ¸´Ê¹ÓöÔÏó¡£ÔÚ³õʼ»¯Ó¦ÓóÌÐòÆÚ¼ä´´½¨Ò»¶¨ÊýÁ¿µÄ¶ÔÏó²¢½«Æä´æ´¢ÔÚÒ»¸ö³ØÖС£¶ÔÒ»¸ö¶ÔÏóÍê³É²Ù×÷ºó£¬½«¸Ã¶ÔÏó·Å»Øµ½³ØÖУ¬ÔÚÐèҪжÔÏóʱ¿ÉÒÔ¶ÔÆä½øÐмìË÷¡£

ÓÉÓÚʵÀý»¯¶ÔÏó³É±¾ºÜ¸ß£¬Ê¹ÓöÔÏó³ØÖØÓöÔÏó¿É¼õÉÙʵÀý»¯¶ÔÏóµÄÐèÇó¡£»¹¿ÉÒÔ¼õÉÙÀ¬»ø»ØÊÕÆ÷ÔËÐеĻú»á£¬´Ó¶øÌá¸ß³ÌÐòµÄÔËÐÐËÙ¶È¡£

ÒÔÏ´úÂëÑÝʾʹÓÃ

Laya.utils.Pool£º

ar SPRITE_SIGN = 'spriteSign';
var sprites = [];
function initialize()
{
for (var i = 0; i < 1000; i++)
{
var sp = Pool.getItemByClass(SPRITE_SIGN, Sprite)
sprites.push(sp);
Laya.stage.addChild(sp);
}
}
initialize();

ÔÚinitializeÖд´½¨´óСΪ1000µÄ¶ÔÏ󳨡£

ÒÔÏ´úÂëÔÚµ±µ¥»÷Êó±êʱ£¬½«É¾³ýÏÔʾÁбíÖеÄËùÓÐÏÔʾ¶ÔÏ󣬲¢ÔÚÒÔºóµÄÆäËûÈÎÎñÖÐÖØ¸´Ê¹ÓÃÕâЩ¶ÔÏó£º

Laya.stage.on("click", this, function()
{
var sp;
for(var i = 0, len = sprites.length; i < len; i++)
{
sp = sprites.pop();
Pool.recover(SPRITE_SIGN, sp);
Laya.stage.removeChild(sp);
}
});

µ÷ÓÃPool.recoverºó£¬Ö¸¶¨µÄ¶ÔÏó»á±»»ØÊÕÖÁ³ØÄÚ¡£

ʹÓÃHandler.create

ÔÚ¿ª·¢¹ý³ÌÖУ¬»á¾­³£Ê¹ÓÃHandlerÀ´Íê³ÉÒì²½»Øµ÷¡£Handler.createʹÓÃÁËÄÚÖöÔÏ󳨹ÜÀí£¬Òò´ËÔÚʹÓÃHandler¶ÔÏóʱӦʹÓÃHandler.createÀ´´´½¨»Øµ÷´¦ÀíÆ÷¡£ÒÔÏ´úÂëʹÓÃHandler.create´´½¨¼ÓÔØµÄ»Øµ÷´¦ÀíÆ÷£º

Laya.loader.load(urls, Handler.create(this, onAssetLoaded));

ÔÚÉÏÃæµÄ´úÂëÖУ¬»Øµ÷±»Ö´ÐкóHandler½«»á±»¶ÔÏó³ØÊջء£´Ëʱ£¬¿¼ÂÇÈçÏ´úÂë»á·¢ÉúʲôÊ£º

Laya.loader.load(urls, Handler.create(this, onAssetLoaded), Handler.create(this, onLoading));

ÔÚÉÏÃæµÄ´úÂëÖУ¬Ê¹ÓÃHandler.create·µ»ØµÄ´¦ÀíÆ÷´¦Àíprogressʼþ¡£´ËʱµÄ»Øµ÷Ö´ÐÐÒ»´ÎÖ®ºó¾Í±»¶ÔÏ󳨻ØÊÕ£¬ÓÚÊÇprogressʼþÖ»´¥·¢ÁËÒ»´Î£¬´ËʱÐèÒª½«ËĸöÃûΪonceµÄ²ÎÊýÉèÖÃΪfalse£º

Laya.loader.load(urls, Handler.create(this, onAssetLoaded), Handler.create(this, onLoading, null, false));

ÊÍ·ÅÄÚ´æ

JavaScriptÔËÐÐʱÎÞ·¨Æô¶¯À¬»ø»ØÊÕÆ÷¡£ÒªÈ·±£Ò»¸ö¶ÔÏóÄܹ»±»»ØÊÕ£¬Çëɾ³ý¶Ô¸Ã¶ÔÏóµÄËùÓÐÒýÓá£SpriteÌṩµÄdestory»á°ïÖúÉèÖÃÄÚ²¿ÒýÓÃΪnull¡£

ÀýÈ磬ÒÔÏ´úÂëÈ·±£¶ÔÏóÄܹ»±»×÷ΪÀ¬»ø»ØÊÕ£º

var sp = new Sprite();
sp.destroy();

µ±¶ÔÏóÉèÖÃΪnull£¬²»»áÁ¢¼´½«Æä´ÓÄÚ´æÖÐɾ³ý¡£Ö»ÓÐϵͳÈÏΪÄÚ´æ×ã¹»µÍʱ£¬À¬»ø»ØÊÕÆ÷²Å»áÔËÐС£ÄÚ´æ·ÖÅ䣨¶ø²»ÊǶÔÏóɾ³ý£©»á´¥·¢À¬»ø»ØÊÕ¡£

À¬»ø»ØÊÕÆÚ¼ä¿ÉÄÜÕ¼ÓôóÁ¿CPU²¢Ó°ÏìÐÔÄÜ¡£Í¨¹ýÖØÓöÔÏ󣬳¢ÊÔÏÞÖÆÊ¹ÓÃÀ¬»ø»ØÊÕ¡£´ËÍ⣬¾¡¿ÉÄܽ«ÒýÓÃÉèÖÃΪnull£¬ÒÔ±ãÀ¬»ø»ØÊÕÆ÷ÓýÏÉÙʱ¼äÀ´²éÕÒ¶ÔÏó¡£ÓÐʱ£¨±ÈÈçÁ½¸ö¶ÔÏóÏ໥ÒýÓã©£¬ÎÞ·¨Í¬Ê±ÉèÖÃÁ½¸öÒýÓÃΪnull£¬À¬»ø»ØÊÕÆ÷½«É¨ÃèÎÞ·¨±»·ÃÎʵ½µÄ¶ÔÏ󣬲¢½«ÆäÇå³ý£¬Õâ»á±ÈÒýÓüÆÊý¸üÏûºÄÐÔÄÜ¡£

×ÊÔ´Ð¶ÔØ

ÓÎÏ·ÔËÐÐʱ×Ü»á¼ÓÔØÐí¶à×ÊÔ´£¬ÕâЩ×ÊÔ´ÔÚʹÓÃÍê³ÉºóÓ¦¼°Ê±Ð¶ÔØ£¬·ñÔòÒ»Ö±²ÐÁôÔÚÄÚ´æÖС£

ÏÂÀýÑÝʾ¼ÓÔØ×ÊÔ´ºó¶Ô±È×ÊÔ´Ð¶ÔØÇ°ºÍÐ¶ÔØºóµÄ×ÊԴ״̬£º

var assets = [];
assets.push("res/apes/monkey0.png");
assets.push("res/apes/monkey1.png");
assets.push("res/apes/monkey2.png");
assets.push("res/apes/monkey3.png");

Laya.loader.load(assets, Handler.create(this, onAssetsLoaded));

function onAssetsLoaded()
{
for(var i = 0, len = assets.length; i < len; ++i)
{
var asset = assets[i];
console.log(Laya.loader.getRes(asset));
Laya.loader.clearRes(asset);
console.log(Laya.loader.getRes(asset));
}
}

¹ØÓÚÂ˾µ¡¢ÕÚÕÖ

³¢ÊÔ¾¡Á¿¼õÉÙʹÓÃÂ˾µÐ§¹û¡£½«Â˾µ£¨BlurFilterºÍGlowFilter£©Ó¦ÓÃÓÚÏÔʾ¶ÔÏóʱ£¬ÔËÐÐʱ½«ÔÚÄÚ´æÖд´½¨Á½ÕÅλͼ¡£ÆäÖÐÿ¸öλͼµÄ´óСÓëÏÔʾ¶ÔÏóÏàͬ¡£½«µÚÒ»¸öλͼ´´½¨ÎªÏÔʾ¶ÔÏóµÄÕ¤¸ñ»¯°æ±¾£¬È»ºóÓÃÓÚÉú³ÉÓ¦ÓÃÂ˾µµÄÁíÒ»¸öλͼ£º

Ó¦ÓÃÂ˾µÊ±ÄÚ´æÖеÄÁ½¸öλͼ

µ±ÐÞ¸ÄÂ˾µµÄij¸öÊôÐÔ»òÕßÏÔʾ¶ÔÏóʱ£¬ÄÚ´æÖеÄÁ½¸öλͼ¶¼½«¸üÐÂÒÔ´´½¨Éú³ÉµÄλͼ£¬ÕâÁ½¸öλͼ¿ÉÄÜ»áÕ¼ÓôóÁ¿ÄÚ´æ¡£´ËÍ⣬´Ë¹ý³ÌÉæ¼°CPU¼ÆË㣬¶¯Ì¬¸üÐÂʱ½«»á½µµÍÐÔÄÜ£¨²Î¼û¡°Í¼ÐÎäÖȾÐÔÄÜ ¨C ¹ØÓÚcacheAs£©¡£

ColorFiterÔÚCanvasäÖȾÏÂÐèÒª¼ÆËãÿ¸öÏñËØµã£¬¶øÔÚWebGLϵÄGPUÏûºÄ¿ÉÒÔºöÂÔ²»¼Æ¡£

×î¼ÑµÄ×ö·¨ÊÇ£¬¾¡¿ÉÄÜʹÓÃͼÏñ´´×÷¹¤¾ß´´½¨µÄλͼÀ´Ä£ÄâÂ˾µ¡£±ÜÃâÔÚÔËÐÐʱÖд´½¨¶¯Ì¬Î»Í¼£¬¿ÉÒÔ°ïÖú¼õÉÙCPU»òGPU¸ºÔØ¡£ÌرðÊÇÒ»ÕÅÓ¦ÓÃÁËÂ˾µ²¢ÇÒ²»»áÔÚÐ޸ĵÄͼÏñ¡£

µÚ4½Ú£ºÍ¼ÐÎäÖȾÐÔÄÜ

ÓÅ»¯Sprite

1.¾¡Á¿¼õÉÙ²»±ØÒªµÄ²ã´ÎǶÌ×£¬¼õÉÙSpriteÊýÁ¿¡£

2.·Ç¿É¼ûÇøÓòµÄ¶ÔÏó¾¡Á¿´ÓÏÔʾÁбíÒÆ³ý»òÕßÉèÖÃvisible=false¡£

3.¶ÔÓÚÈÝÆ÷ÄÚÓдóÁ¿¾²Ì¬ÄÚÈÝ»òÕß²»¾­³£±ä»¯µÄÄÚÈÝ£¨±ÈÈç°´Å¥£©£¬¿ÉÒÔ¶ÔÕû¸öÈÝÆ÷ÉèÖÃcacheAsÊôÐÔ£¬ÄÜ´óÁ¿¼õÉÙSpriteµÄÊýÁ¿£¬ÏÔÖøÌá¸ßÐÔÄÜ¡£Èç¹ûÓж¯Ì¬ÄÚÈÝ£¬×îºÃºÍ¾²Ì¬ÄÚÈÝ·Ö¿ª£¬ÒÔ±ãÖ»»º´æ¾²Ì¬ÄÚÈÝ¡£

4.PanelÄÚ£¬»áÕë¶ÔpanelÇøÓòÍâµÄÖ±½Ó×Ó¶ÔÏó£¨×Ó¶ÔÏóµÄ×Ó¶ÔÏóÅжϲ»ÁË£©½øÐв»äÖȾ´¦Àí£¬³¬³öpanelÇøÓòµÄ×Ó¶ÔÏóÊDz»²úÉúÏûºÄµÄ¡£

ÓÅ»¯DrawCall

1.¶Ô¸´ÔÓ¾²Ì¬ÄÚÈÝÉèÖÃcacheAs£¬ÄÜ´óÁ¿¼õÉÙDrawCall£¬Ê¹ÓúÃcacheAsÊÇÓÎÏ·ÓÅ»¯µÄ¹Ø¼ü¡£

2.¾¡Á¿±£Ö¤Í¬Í¼¼¯µÄͼƬäÖȾ˳ÐòÊǰ¤×ŵģ¬Èç¹û²»Í¬Í¼¼¯½»²æäÖȾ£¬»áÔö¼ÓDrawCallÊýÁ¿¡£

3.¾¡Á¿±£Ö¤Í¬Ò»¸öÃæ°åÖеÄËùÓÐ×ÊÔ´ÓÃÒ»¸öͼ¼¯£¬ÕâÑùÄܼõÉÙÌá½»Åú´Î¡£

ÓÅ»¯Canvas

ÔÚ¶ÔCanvasÓÅ»¯Ê±£¬ÎÒÃÇÐèҪעÒ⣬ÔÚÒÔϳ¡ºÏ²»ÒªÊ¹ÓÃcacheAs£º

1.¶ÔÏó·Ç³£¼òµ¥£¬±ÈÈçÒ»¸ö×Ö»òÕßÒ»¸öͼƬ£¬ÉèÖÃcacheAs=bitmap²»µ«²»Ìá¸ßÐÔÄÜ£¬·´¶ø»áËðʧÐÔÄÜ¡£

2.ÈÝÆ÷ÄÚÓо­³£±ä»¯µÄÄÚÈÝ£¬±ÈÈçÈÝÆ÷ÄÚÓÐÒ»¸ö¶¯»­»òÕßµ¹¼ÆÊ±£¬Èç¹ûÔÙ¶ÔÕâ¸öÈÝÆ÷ÉèÖÃcacheAs=bitmap£¬»áËðʧÐÔÄÜ¡£

¿ÉÒÔͨ¹ý²é¿´Canvasͳ¼ÆÐÅÏ¢µÄµÚÒ»¸öÖµ£¬ÅжÏÊÇ·ñÒ»Ö±ÔÚË¢ÐÂCanvas»º´æ¡£

¹ØÓÚcacheAs

ÉèÖÃcacheAs¿É½«ÏÔʾ¶ÔÏ󻺴æÎª¾²Ì¬Í¼Ïñ£¬µ±cacheAsʱ£¬×Ó¶ÔÏó·¢Éú±ä»¯£¬»á×Ô¶¯ÖØÐ»º´æ£¬Í¬Ê±Ò²¿ÉÒÔÊÖ¶¯µ÷ÓÃreCache·½·¨¸üлº´æ¡£ ½¨Òé°Ñ²»¾­³£±ä»¯µÄ¸´ÔÓÄÚÈÝ£¬»º´æÎª¾²Ì¬Í¼Ïñ£¬Äܼ«´óÌá¸ßäÖȾÐÔÄÜ£¬cacheAsÓС±none¡±£¬¡±normal¡±ºÍ¡±bitmap¡±Èý¸öÖµ¿ÉÑ¡¡£

ĬÈÏΪ¡±none¡±£¬²»×öÈκλº´æ¡£

2.µ±ÖµÎª¡±normal¡±Ê±£¬canvasϽøÐл­²¼»º´æ£¬webglģʽϽøÐÐÃüÁ´æ¡£

3.µ±ÖµÎª¡±bitmap¡±Ê±£¬canvasϽøÐÐÒÀÈ»ÊÇ»­²¼»º´æ£¬webGLģʽÏÂʹÓÃrenderTarget»º´æ¡£ÕâÀïÐèҪעÒâµÄÊÇ£¬webGLÏÂrenderTarget»º´æÄ£Ê½ÓÐ2048´óСÏÞÖÆ£¬³¬³ö2048»á¶îÍâÔö¼ÓÄڴ濪Ïú¡£ÁíÍ⣬²»¶ÏÖØ»æÊ±¿ªÏúÒ²±È½Ï´ó£¬µ«ÊÇ»á¼õÉÙdrawcall£¬äÖȾÐÔÄÜ×î¸ß¡£ webGLÏÂÃüÁ´æÄ£Ê½Ö»»á¼õÉÙ½Úµã±éÀú¼°ÃüÁî×éÖ¯£¬²»»á¼õÉÙdrawcall£¬ÐÔÄÜÖеȡ£

ÉèÖÃcacheAsºó£¬»¹¿ÉÒÔÉèÖÃstaticCache=trueÒÔ×èÖ¹×Ô¶¯¸üлº´æ£¬Í¬Ê±¿ÉÒÔÊÖ¶¯µ÷ÓÃreCache·½·¨¸üлº´æ¡£

cacheAsÖ÷Ҫͨ¹ýÁ½·½ÃæÌáÉýÐÔÄÜ¡£Ò»ÊǼõÉÙ½Úµã±éÀúºÍ¶¥µã¼ÆË㣻¶þÊǼõÉÙdrawCall¡£ÉÆÓÃcacheAs½«ÊÇÒýÇæÓÅ»¯ÐÔÄܵÄÀûÆ÷¡£

ÏÂÀý»æÖÆ10000¸öÎı¾£º

Laya.init(550, 400, Laya.WebGL);
Laya.Stat.show();

var textBox = new Laya.Sprite();

var text;
for (var i = 0; i < 10000; i++)
{
text = new Laya.Text();
text.text = (Math.random() * 100).toFixed(0);
text.color = "#CCCCCC";

text.x = Math.random() * 550;
text.y = Math.random() * 400;

textBox.addChild(text);
}

Laya.stage.addChild(textBox);

ÏÂÃæÊDZÊÕßµçÄÔÉϵÄÔËÐÐʱ½ØÍ¼£¬FPSÎȶ¨ÓÚ52ÉÏÏ¡£

µ±ÎÒÃǶÔÎÄ×ÖËùÔÚµÄÈÝÆ÷ÉèÖÃΪcacheAsÖ®ºó£¬ÈçÏÂÃæµÄÀý×ÓËùʾ£¬ÐÔÄÜ»ñµÃ½Ï´óµÄÌáÉý£¬FPS´ïµ½µ½ÁË60Ö¡¡£

// ¡­Ê¡ÂÔÆäËû´úÂë¡­ var textBox = new Laya.Sprite();
textBox.cacheAs = "bitmap"; // ¡­Ê¡ÂÔÆäËû´úÂë¡­

ÎÄ×ÖÃè±ß

ÔÚÔËÐÐʱ£¬ÉèÖÃÁËÃè±ßµÄÎı¾±ÈûÓÐÃè±ßµÄÎı¾¶àµ÷ÓÃÒ»´Î»æÍ¼Ö¸Áî¡£´Ëʱ£¬Îı¾¶ÔCPUµÄʹÓÃÁ¿ºÍÎı¾µÄÊýÁ¿³ÉÕý±È¡£Òò´Ë£¬¾¡Á¿Ê¹ÓÃÌæ´ú·½°¸À´Íê³ÉͬÑùµÄÐèÇó¡£

¶ÔÓÚ¼¸ºõ²»±ä¶¯µÄÎı¾ÄÚÈÝ£¬¿ÉÒÔʹÓÃcacheAs½µµÍÐÔÄÜÏûºÄ£¬²Î¼û¡°Í¼ÐÎäÖȾÐÔÄÜ ¨C ¹ØÓÚcacheAs¡±¡£

¶ÔÓÚÄÚÈݾ­³£±ä¶¯£¬µ«ÊÇʹÓõÄ×Ö·ûÊýÁ¿½ÏÉÙµÄÎı¾Óò£¬¿ÉÒÔÑ¡ÔñʹÓÃλͼ×ÖÌå¡£

Ìø¹ýÎı¾ÅŰ棬ֱ½ÓäÖȾ

´ó¶àÊýÇé¿öÏ£¬ºÜ¶àÎı¾¶¼²»ÐèÒª¸´ÔÓµÄÅŰ棬½ö½ö¼òµ¥µØÏÔʾһÐÐ×Ö¡£ÎªÁËÓ­ºÏÕâÒ»ÐèÇó£¬TextÌṩµÄÃûΪchangeTextµÄ·½·¨¿ÉÒÔÖ±½ÓÌø¹ýÅŰ档

var text = new Text();
text.text = "text";
Laya.stage.addChild(text);
//ºóÃæÖ»ÊǸüÐÂÎÄ×ÖÄÚÈÝ£¬Ê¹ÓÃchangeTextÄÜÌá¸ßÐÔÄÜ
text.changeText("text changed.");

Text.changeText»áÖ±½ÓÐ޸ĻæÍ¼Ö¸ÁîÖиÃÎı¾»æÖƵÄ×îºóÒ»ÌõÖ¸ÁÕâÖÖÇ°ÃæµÄ»æÍ¼Ö¸ÁîÒÀ¾É´æÔÚµÄÐÐΪ»áµ¼ÖÂchangeTextֻʹÓÃÓÚÒÔÏÂÇé¿ö£º

Îı¾Ê¼ÖÕÖ»ÓÐÒ»ÐС£

Îı¾µÄÑùʽʼÖÕ²»±ä£¨ÑÕÉ«¡¢´Öϸ¡¢Ð±Ìå¡¢¶ÔÆëµÈµÈ£©¡£

¼´Ê¹Èç´Ë£¬Êµ¼Ê±à³ÌÖÐÒÀ¾É»á¾­³£Ê¹Óõ½ÕâÑùµÄÐèÒª¡£

µÚ5½Ú£º¼õÉÙCPUʹÓÃÁ¿

¼õÉÙ¶¯Ì¬ÊôÐÔ²éÕÒ

JavaScriptÖÐÈκζÔÏó¶¼ÊǶ¯Ì¬µÄ£¬Äã¿ÉÒÔÈÎÒâµØÌí¼ÓÊôÐÔ¡£È»¶ø£¬ÔÚ´óÁ¿µÄÊôÐÔÀï²éÕÒijÊôÐÔ¿ÉÄܺܺÄʱ¡£Èç¹ûÐèҪƵ·±Ê¹ÓÃij¸öÊôÐÔÖµ£¬¿ÉÒÔʹÓþֲ¿±äÁ¿À´±£´æËü£º

function foo()
{
var prop = target.prop;
// ʹÓÃprop
process1(prop);
process2(prop);
process3(prop);
}

¼ÆÊ±Æ÷

LayaAirÌṩÁ½ÖÖ¼ÆÊ±Æ÷Ñ­»·À´Ö´ÐдúÂë¿é¡£

Laya.timer.frameLoopÖ´ÐÐÆµÂÊÒÀÀµÓÚ֡ƵÂÊ£¬¿Éͨ¹ýStat.FPS²é¿´µ±Ç°Ö¡Æµ¡£

Laya.timer.loopÖ´ÐÐÆµÂÊÒÀÀµÓÚ²ÎÊýÖ¸¶¨Ê±¼ä¡£

µ±Ò»¸ö¶ÔÏóµÄÉúÃüÖÜÆÚ½áÊøÊ±£¬¼ÇµÃÇå³ýÆäÄÚ²¿µÄTimer£º

Laya.timer.frameLoop(1, this, animateFrameRateBased);
Laya.stage.on("click", this, dispose);
function dispose()
{
Laya.timer.clear(this, animateFrameRateBased);
}

»ñÈ¡ÏÔʾ¶ÔÏó±ß½çµÄ×ö·¨

ÔÚÏà¶Ô²¼¾ÖÖУ¬ºÜ¾­³£ÐèÒªÕýÈ·µØ»ñÈ¡ÏÔʾ¶ÔÏóµÄ±ß½ç¡£»ñÈ¡ÏÔʾ¶ÔÏóµÄ±ß½çÒ²ÓжàÖÖ×ö·¨£¬¶øÆä¼ä²îÒìºÜÓбØÒªÖªµÀ¡£

1.ʹÓÃgetBounds/ getGraphicBounds¡£¡¢

var sp = new Sprite();
sp.graphics.drawRect(0, 0, 100, 100, "#FF0000");
var bounds = sp.getGraphicBounds();
Laya.stage.addChild(sp);

getBounds¿ÉÒÔÂú×ã¶àÊý¶àÊýÐèÇ󣬵«ÓÉÓÚÆäÐèÒª¼ÆËã±ß½ç£¬²»ÊÊºÏÆµ·±µ÷Óá£

2.ÉèÖÃÈÝÆ÷µÄautoSizeΪtrue¡£

var sp = new Sprite();
sp.autoSize = true;
sp.graphics.drawRect(0, 0, 100, 100, "#FF0000");
Laya.stage.addChild(sp);

ÉÏÊö´úÂë¿ÉÒÔÔÚÔËÐÐʱÕýÈ·»ñÈ¡¿í¸ß¡£autoSizeÔÚ»ñÈ¡¿í¸ß²¢ÇÒÏÔʾÁбíµÄ״̬·¢Éú¸Ä±äʱ»áÖØÐ¼ÆË㣨autoSizeͨ¹ýgetBoudns¼ÆËã¿í¸ß£©¡£ËùÒÔ¶ÔÓµÓдóÁ¿×Ó¶ÔÏóµÄÈÝÆ÷Ó¦ÓÃautoSizeÊDz»¿ÉÈ¡µÄ¡£Èç¹ûÉèÖÃÁËsize£¬autoSize½«²»ÆðЧ¡£

ʹÓÃloadImageºó»ñÈ¡¿í¸ß£º

var sp = new Sprite();
sp.loadImage("res/apes/monkey2.png", 0, 0, 0, 0, Handler.create(this, function()
{
console.log(sp.width, sp.height);
}));
Laya.stage.addChild(sp);

loadImageÔÚ¼ÓÔØÍê³ÉµÄ»Øµ÷º¯Êý´¥·¢Ö®ºó²Å¿ÉÒÔÕýÈ·»ñÈ¡¿í¸ß¡£

3.Ö±½Óµ÷ÓÃsizeÉèÖãº

Laya.loader.load("res/apes/monkey2.png", Handler.create(this, function()
{
var texture = Laya.loader.getRes("res/apes/monkey2.png");
var sp = new Sprite();
sp.graphics.drawTexture(texture, 0, 0);
sp.size(texture.width, texture.height);
Laya.stage.addChild(sp);
}));

ʹÓÃGraphics.drawTexture²¢²»»á×Ô¶¯ÉèÖÃÈÝÆ÷µÄ¿í¸ß£¬µ«ÊÇ¿ÉÒÔʹÓÃTextureµÄ¿í¸ß¸³ÓèÈÝÆ÷¡£ÎãÓ¹ÖÃÒÉ£¬ÕâÊÇ×î¸ßЧµÄ·½Ê½¡£

×¢£ºgetGraphicsBoundsÓÃÓÚ»ñȡʸÁ¿»æÍ¼¿í¸ß¡£

¸ù¾Ý»î¶¯×´Ì¬¸Ä±ä֡Ƶ

֡ƵÓÐÈýÖÖģʽ£¬Stage.FRAME_SLOWά³ÖFPSÔÚ30£»Stage.FRAME_FASTά³ÖFPSÔÚ60£»Stage.FRAME_MOUSEÔòÑ¡ÔñÐÔά³ÖFPSÔÚ30»ò60Ö¡¡£

ÓÐʱ²¢²»ÐèÒªÈÃÓÎÏ·ÒÔ60FPSµÄËÙÂÊÖ´ÐУ¬ÒòΪ30FPSÒѾ­Äܹ»Âú×ã¶àÊýÇé¿öÏÂÈËÀàÊÓ¾õµÄÏìÓ¦£¬µ«ÊÇÊó±ê½»»¥Ê±£¬30FPS¿ÉÄÜ»áÔì³É»­ÃæµÄ²»Á¬¹á£¬ÓÚÊÇStage.FRAME_MOUSEÓ¦Ô˶øÉú¡£

ÏÂÀýչʾÒÔStage.FRAME_SLOWµÄÖ¡ÂÊ£¬ÔÚ»­²¼ÉÏÒÆ¶¯Êó±ê£¬Ê¹Ô²Çò¸úËæÊó±êÒÆ¶¯£º

Laya.init(Browser.width, Browser.height);
Stat.show();
Laya.stage.frameRate = Stage.FRAME_SLOW;

var sp = new Sprite();
sp.graphics.drawCircle(0, 0, 20, "#990000");
Laya.stage.addChild(sp);

Laya.stage.on(Event.MOUSE_MOVE, this, function()
{
sp.pos(Laya.stage.mouseX, Laya.stage.mouseY);
});

´ËʱFPSÏÔʾ30£¬²¢ÇÒÔÚÊó±êÒÆ¶¯Ê±£¬¿ÉÒԸоõµ½Ô²ÇòλÖõĸüв»Á¬¹á¡£ÉèÖÃStage.frameRateΪStage.FRAME_MOUSE£º

Laya.stage.frameRate = Stage.FRAME_MOUSE;

´ËʱÔÚÊó±êÒÆ¶¯ºóFPS»áÏÔʾ60£¬²¢ÇÒ»­ÃæÁ÷³©¶ÈÌáÉý¡£ÔÚÊó±ê¾²Ö¹2Ãë²»¶¯ºó£¬FPSÓÖ»á»Ö¸´µ½30Ö¡¡£

ʹÓÃcallLater

callLaterʹ´úÂë¿éÑÓ³ÙÖÁ±¾Ö¡äÖȾǰִÐС£Èç¹ûµ±Ç°µÄ²Ù×÷Ƶ·±¸Ä±äij¶ÔÏóµÄ״̬£¬´Ëʱ¿ÉÒÔ¿¼ÂÇʹÓÃcallLater£¬ÒÔ¼õÉÙÖØ¸´¼ÆËã¡£

¿¼ÂÇÒ»¸öͼÐΣ¬¶ÔËüÉèÖÃÈκθıäÍâ¹ÛµÄÊôÐÔ¶¼½«µ¼ÖÂͼÐÎÖØ»æ£º

var rotation = 0,
scale = 1,
position = 0;

function setRotation(value)
{
this.rotation = value;
update();
}

function setScale(value)
{
this.scale = value;
update();
}

function setPosition(value)
{
this.position = value;
update();
}

function update()
{
console.log('rotation: ' + this.rotation + '\tscale: ' + this.scale + '\tposition: ' + position);
}

µ÷ÓÃÒÔÏ´úÂë¸ü¸Ä״̬£º

setRotation(90); setScale(2); setPosition(30);

¿ØÖÆÌ¨µÄ´òÓ¡½á¹ûÊÇ

rotation: 90 scale: 1 position: 0

rotation: 90 scale: 2 position: 0

rotation: 90 scale: 2 position: 30

update±»µ÷ÓÃÁËÈý´Î£¬²¢ÇÒ×îºóµÄ½á¹ûÊÇÕýÈ·µÄ£¬µ«ÊÇÇ°ÃæÁ½´Îµ÷Óö¼ÊDz»ÐèÒªµÄ¡£

³¢ÊÔ½«Èý´¦update¸ÄΪ£º

Laya.timer.callLater(this, update);

´Ëʱ£¬updateÖ»»áµ÷ÓÃÒ»´Î£¬²¢ÇÒÊÇÎÒÃÇÏëÒªµÄ½á¹û¡£

ͼƬ/ͼ¼¯¼ÓÔØ

ÔÚÍê³ÉͼƬ/ͼ¼¯µÄ¼ÓÔØÖ®ºó£¬ÒýÇæ¾Í»á¿ªÊ¼´¦ÀíͼƬ×ÊÔ´¡£Èç¹û¼ÓÔØµÄÊÇÒ»ÕÅͼ¼¯£¬»á´¦ÀíÿÕÅ×ÓͼƬ¡£Èç¹ûÒ»´ÎÐÔ´¦Àí´óÁ¿µÄͼƬ£¬Õâ¸ö¹ý³Ì¿ÉÄÜ»áÔì³É³¤Ê±¼äµÄ¿¨¶Ù¡£

ÔÚÓÎÏ·µÄ×ÊÔ´¼ÓÔØÖУ¬¿ÉÒÔ½«×ÊÔ´°´Õչؿ¨¡¢³¡¾°µÈ·ÖÀà¼ÓÔØ¡£ÔÚͬһʱ¼ä´¦ÀíµÄͼƬԽÉÙ£¬µ±Ê±µÄÓÎÏ·ÏìÓ¦ËÙ¶ÈÒ²»á¸ü¿ì¡£ÔÚ×ÊԴʹÓÃÍê³Éºó£¬Ò²¿ÉÒÔÓèÒÔÐ¶ÔØ£¬ÊÍ·ÅÄÚ´æ¡£

µÚ6½Ú£ºÆäËûÓÅ»¯²ßÂÔ

1.¼õÉÙÁ£×ÓʹÓÃÊýÁ¿£¬ÔÚÒÆ¶¯Æ½Ì¨CanvasģʽÏ£¬¾¡Á¿²»ÓÃÁ£×Ó£»

2.ÔÚCanvasģʽÏ£¬¾¡Á¿¼õÉÙÐýת£¬Ëõ·Å£¬alphaµÈÊôÐÔµÄʹÓã¬ÕâЩÊôÐÔ»á¶ÔÐÔÄܲúÉúÏûºÄ¡££¨ÔÚWebGLģʽ¿ÉÒÔʹÓã©£»

3.²»ÒªÔÚtimeloopÀïÃæ´´½¨¶ÔÏó¼°¸´ÔÓ¼ÆË㣻

4.¾¡Á¿¼õÉÙ¶ÔÈÝÆ÷µÄautoSizeµÄʹÓ㬼õÉÙgetBounds()µÄʹÓã¬ÒòΪÕâЩµ÷Óûá²úÉú½Ï¶à¼ÆË㣻

5.¾¡Á¿ÉÙÓÃtry catchµÄʹÓ㬱»try catchµÄº¯ÊýÖ´Ðлá±äµÃ·Ç³£Âý£»

Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì

   
3728 ´Îä¯ÀÀ       28