第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 EaselJS,如何在不重繪現(xiàn)有位圖元素的情況下設(shè)置繪畫(huà)的幀率?

使用 EaselJS,如何在不重繪現(xiàn)有位圖元素的情況下設(shè)置繪畫(huà)的幀率?

慕尼黑8549860 2023-06-09 17:37:36
我是 EaselJS 的新手,我有一個(gè)帶位圖的舞臺(tái),我需要添加繪畫(huà)功能,以便可以在位圖之上繪制形狀。paint 函數(shù)需要stage.autoClear = false來(lái)創(chuàng)建形狀。此代碼強(qiáng)制重繪舞臺(tái)上的所有元素(包括位圖)。但不應(yīng)重繪舞臺(tái)上現(xiàn)有的位圖。位圖位于container中,它是stage的子級(jí)。這就是我所擁有的(大部分來(lái)自https://github.com/CreateJS/EaselJS/blob/master/examples/CurveTo.html):   function init() {            canvas = document.getElementById("theCanvas");        stage = new createjs.Stage(canvas);        createjs.Touch.enable(stage);        stage.enableMouseOver(10);        stage.mouseMoveOutside = true;        stage.addChild(container);    };        function initPaint() {            var oldPt;        var oldMidPt;        var color;        var stroke;                stage.autoClear = false;        stage.enableDOMEvents(true);        createjs.Ticker.framerate = 24;                stage.addEventListener("stagemousedown", handleMouseDown);        stage.addEventListener("stagemouseup", handleMouseUp);            stage.addChild(drawingCanvas);        stage.update();        };        function handleMouseDown(event) {        if(!event.primary) {return; }        stage.autoClear = false;            color = "#000000";        stroke = 20;        oldPt = new createjs.Point(stage.mouseX, stage.mouseY);        oldMidPt = oldPt.clone();        stage.addEventListener("stagemousemove", handleMouseMove);    }        function handleMouseMove(event) {        if (!event.primary) { return; }        var midPt = new createjs.Point(oldPt.x + stage.mouseX >> 1, oldPt.y + stage.mouseY >> 1);            drawingCanvas.graphics.clear().setStrokeStyle(stroke, 'round', 'round').beginStroke(color).moveTo(midPt.x, midPt.y).curveTo(oldPt.x, oldPt.y, oldMidPt.x, oldMidPt.y);            oldPt.x = stage.mouseX;        oldPt.y = stage.mouseY;            oldMidPt.x = midPt.x;        oldMidPt.y = midPt.y;            stage.update();    }    位圖元素已添加到舞臺(tái)中。當(dāng)使用stage.autoclear = false調(diào)用initPaint時(shí),位圖會(huì)重新繪制,一個(gè)在另一個(gè)之上(這是顯而易見(jiàn)的,因?yàn)槲以谖粓D上有陰影效果并且陰影不斷變暗)。如何阻止重繪位圖元素?
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

您不能有條件地選擇重新繪制到舞臺(tái)上的內(nèi)容。


您擁有的最佳選擇是擁有一個(gè)單獨(dú)的畫(huà)布/緩存,您可以連續(xù)繪制到該畫(huà)布/緩存,然后將其添加為主舞臺(tái)上的位圖源。緩存基本上為你做了這個(gè)。


一種簡(jiǎn)單的方法是將您的自動(dòng)繪制內(nèi)容放入容器中,并且cache()它:


var c = new createjs.Container();

c.addChild(bg, txt); // Add your content

c.cache(0,0,400,800);

然后你不需要在你的舞臺(tái)上使用 autoClear,其他一切都會(huì)正常繪制。您只需要在內(nèi)容更改時(shí)更新緩存即可。使用source-overas 繪制模式會(huì)將當(dāng)前內(nèi)容添加到緩存中,而不是先清除它。


c.updateCache("source-over");

例如,這是一個(gè)小提琴,我在其中為透明框上的一些文本設(shè)置動(dòng)畫(huà)。加法效果看起來(lái)很棒,但它也使圓形做同樣的事情:https ://jsfiddle.net/lannymcnie/yfqne2or/

http://img1.sycdn.imooc.com//6482f3190001c97103120212.jpg

通過(guò)簡(jiǎn)單地將 bg 和文本放在一個(gè)容器中,然后緩存它,我可以控制哪些部分得到效果,而不影響舞臺(tái)的其余部分。請(qǐng)注意,這確實(shí)會(huì)導(dǎo)致您的內(nèi)容重復(fù)繪制,但實(shí)際上沒(méi)有更好的方法可以使用一個(gè)畫(huà)布來(lái)完成它。https://jsfiddle.net/lannymcnie/yfqne2or/2

http://img1.sycdn.imooc.com//6482f32200014c7b03230183.jpg

查看完整回答
反對(duì) 回復(fù) 2023-06-09
  • 1 回答
  • 0 關(guān)注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)