lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7013|回复: 2
打印 上一主题 下一主题

将sprite转成bitmap的一瞬间掉帧好厉害 卡了半秒左右

[复制链接]

18

主题

0

好友

198

积分

士兵

Rank: 1

跳转到指定楼层
楼主
发表于 2014-8-15 16:56:27 |只看该作者 |倒序浏览
测试的时候 往右点一下就可以了  球会在画布上画线 然后超过画布长800的时候转成bitmap 作为第二个场景的背景

        init(1000 / 60, 'legend', 800, 700, main);
                        var bg, cir, x, y, runTween, zhi;
                        var ctx, cl, fps;
                        var timer, Bigcon;
                        function main() {
                                Bigcon = new LSprite();
                                addChild(Bigcon);
                                Ballcon = new LSprite();
                                addChild(Ballcon)
                                bg = new LSprite();
                                bg.graphics.drawRect(1, "black", [0, 0,800,800], true, "black");
                                Bigcon.addChild(bg);
                                fps = new FPS();
                                addChild(fps)
                                initGame()
                        }

                        function initGame() {

                                cir = new LShape();
                                cir.graphics.drawArc(1, "red", [0, 0, 10, 0, Math.PI * 2], true, "black");
                                cir.x = 400;
                                cir.y = 350;
                                Ballcon.addChild(cir);
                                LGlobal.stage.addEventListener(LMouseEvent.MOUSE_DOWN, setXY);
                                LGlobal.stage.addEventListener(LEvent.ENTER_FRAME, collect);
                                zhi = new LSprite();
                                Bigcon.addChild(zhi);
                                ctx = LGlobal.canvas;

                                timer = setInterval(function() {
                                        ballRun();
                                        bgMove();
                                        aa();
                                }, 30)
                        }

                        var startX = 400, startY = 350, endX = 400, endY = 350, speedX = 5, speedY = 5, v = 5;
                        var clickX, clickY, bitmapData, bitmap;
                        function setXY(e) {
                                clearInterval(timer);
                                clickX = e.selfX - Bigcon.x;
                                clickY = e.selfY - Bigcon.y;
                                var Vradio = Math.abs(clickX - endX) / Math.abs(clickY - endY);
                                var vy = Math.sqrt((v * v * Math.pow(clickY - endY, 2)) / (Math.pow(clickX - endX, 2) + Math.pow(clickY - endY, 2)));
                                var vx = Math.abs(vy * ((clickX - endX) / (clickY - endY)));

                                speedX = clickX - endX > 0 ? vx : -vx;
                                speedY = clickY - endY > 0 ? vy : -vy;

                                timer = setInterval(function() {
                                        ballRun();
                                        bgMove();
                                        aa();
                                }, 30)

                        }

                        function ballRun() {
                                cir.x += speedX;
                                cir.y += speedY;
                        }

                        function bgMove() {
                                LGlobal.stage.x -= speedX;
                                LGlobal.stage.y -= speedY;
                                fps.x += speedX;
                                fps.y += speedY

                        }

                        function aa() {
                                endX += speedX;
                                endY += speedY;
                                zhi.graphics.drawLine(1, "red", [startX, startY, endX, endY]);
                                startX = endX;
                                startY = endY;
                        }
                       
                        var page = 1;
                        var bitmapData,bitmap
                        var iscreate = true;
                        function collect() {
                                LGlobal.destroy = false;
                                x = cir.x;
                                y = cir.y;
                                if (x > 800 * page) {
                                        bitmapData = new LBitmapData(null, (800 * (page - 1)), 0, 800 + (800 * (page)), 1400);
                                        bitmapData.draw(Bigcon);
                                        bitmap = new LBitmap(bitmapData);
                                        Bigcon.addChildAt(bitmap, 0);
                                        zhi.graphics.clear()
                                        Bigcon.removeChildAt(1);
                                        bitmap.x = 800 * page;
                                        page += 1;
                                        LGlobal.destroy = false;
                                }
                        }
回复

使用道具 举报

37

主题

8

好友

9312

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

沙发
发表于 2014-8-15 17:09:36 |只看该作者
创建LBitmapData对象的时候,传入LBitmapData.DATA_CANVAS参数试一下
不回答与技术和引擎不相关的问题
回复

使用道具 举报

18

主题

0

好友

198

积分

士兵

Rank: 1

板凳
发表于 2014-8-15 17:18:22 |只看该作者
lufy 发表于 2014-8-15 17:09
创建LBitmapData对象的时候,传入LBitmapData.DATA_CANVAS参数试一下

果然是这个问题  万分感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-1 14:36 , Processed in 0.048014 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部