關(guān)于涂色后“退回到上一步”功能的實現(xiàn)思路

“退回到上一步”的功能,大體思路是這樣的:將每一次涂色后的相關(guān)數(shù)據(jù)壓棧,點擊回退時,從棧中取出數(shù)據(jù),根據(jù)這些數(shù)據(jù)恢復(fù)上一次的樣子。思路很簡單,可是,壓入棧中的數(shù)據(jù)應(yīng)該是什么呢?我這里壓入的是鼠標(biāo)點擊的點坐標(biāo)和這個點所在的封閉區(qū)域的顏色值,坐標(biāo)好辦,但是如何知道顏色值呢?quick-cocos-2d-x并沒有提供獲取當(dāng)前點的像素值的接口,這就需要一個table來標(biāo)記每一個區(qū)域的顏色值了。那么這樣一來,首先需要做的是將圖像分割成一個個區(qū)域,給每個區(qū)域分配一個ID。創(chuàng)建一個markRegionTable用來記錄每一個區(qū)域當(dāng)前的顏色。當(dāng)點擊某某個區(qū)域時,先獲取該區(qū)域的ID,然后在markRegionTable[ID]中獲取顏色,如果顏色跟當(dāng)前畫筆的顏色不同,則將該顏色壓棧,并將markRegionTable[ID]的值修改為當(dāng)前畫筆的顏色值?;赝藭r,取棧頂元素,得到坐標(biāo)和顏色值,根據(jù)坐標(biāo)給所在區(qū)域涂上該顏色就行了。

入棧邏輯大致如下:

local regionId = region_data[x][y] --求出區(qū)域ID

markRegionTable = markRegionTable or {}

if not regionId then return end

if markRegionTable[regionId] == nil then

???? Stack.push(colorMsgStack, {{x = x, y = y}, 1})

? ? markRegionTable[regionId] = drawLayer._selectedColor?? --drawLayer._selectedColor為畫筆顏色

elseif markRegionTable[regionId] ~= drawLayer._selectedColor then

???? Stack.push(colorMsgStack, {{x = x, y = y}, markRegionTable[regionId]})

????? markRegionTable[regionId] = drawLayer._selectedColor

end

出棧邏輯大致如下:

if event.colorMsg == nil then

????? return

end

local x = event.colorMsg[1].x

local y = event.colorMsg[1].y

local regionId = region_data[x][imgTop - y]

local color = event.colorMsg[2]

if not regionId then return end

drawLayer:setColor(color, drawLayer:getRowAndCol(color))

drawLayer:fillColor(x, y)

markRegionTable[regionId] = color

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 《ilua》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 1...
    葉染柒丶閱讀 11,583評論 0 11
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,390評論 0 17
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評論 19 139
  • 轉(zhuǎn)載請聲明 原文鏈接 關(guān)注公眾號獲取更多資訊 這篇文章主要總結(jié)H5的一些新增的功能以及一些基礎(chǔ)歸納,這里只是一個提...
    前端進(jìn)階之旅閱讀 9,229評論 22 225
  • 首頁 資訊 文章 資源 小組 相親 登錄 注冊 首頁 最新文章 IT 職場 前端 后端 移動端 數(shù)據(jù)庫 運維 其他...
    Helen_Cat閱讀 4,159評論 1 10

友情鏈接更多精彩內(nèi)容