摘要:文件可以包含模板和樣式塊,因此組件的所有必需代碼都可以存在于單個文件中。該方法將使用其顏色信息發布事件,畫布組件將偵聽該顏色信息。包含任意顏色的像素名稱,是包含值的顏色字典對象。從中使用了來渲染。
原文出處:Quick Introduction to Vue.js?—?Super Mario Pixel Art
::代碼我已經歸納在github上:【vue2-pixel-art】::
::__查看【Demo】__::
最近有人問我為什么選擇使用Vue.js來實現我們公司的第一款產品。哈哈哈,并不是每個人都有機會去探索Vue.js的;使用在這里,我先可以通過寫一個簡簡單單的Vue.js例子來快速介紹它,將讓大家對Vue.js有著很好認識和了解,希望這些能給大家有所幫助。
繪制圖形可能不是Vue.js最受歡迎的用例,甚至很多市場上的Demo都很少有關繪制圖形的;但在這篇文章中,我想用繪制圖形來舉一個例子,我想其他人已經在github上發現這個非常樂趣并好玩的動sai -- 超級馬里奧像素藝術(靈感來自GithubData-Pixels),它繪制許多像素,當點擊其中一個像素時,周邊相似的都會隨之而改變。
哦,我們這里不是使用canvas來說實現的,是使用了div。
在這里我使用了Vue.js來改寫,用Vue.js的方法來繪制和更新顏色,感覺超級棒棒的。
構建兩個Vue組件在開始編寫代碼之前,我就構建了兩個Vue組件來實現這個圖形:
pixel.vue
pixel.vue是一個組件(這里放著每個小小像素單位);參數有color(RGB值)和size(像素大小)的兩個數據,當它被點擊并觸發事件,就是通知其父組件并也將會觸發一個事件。
canvas.vue
是一個基于具有每個像素的顏色的二維數組初始化像素分量的容器。
.vue 文件可以包含template模板、JavaScript和CSS樣式塊,因此組件的所有必需代碼都可以存在于單個文件中。
在script標簽中,color(background color)和size(pixel size)是組件初始化時傳遞的必需屬性(props)。
如果沒有必要指定type,并required不在props有要求,那它可以簡化為props: ["color", "size"]。屬性的值應用于pixelStyle()計算的屬性,該屬性綁定到div.style。
如果color屬性值更改,它將通過計算屬性傳播到模板,并且div.l-pixel將更新背景。v-bind:(完整語法)或 :(簡寫)用于綁定模板中的屬性或數據。傳播是:
color change in canvas.vue >>> "color" in "props" in pixel.vue >>> "pixelStyle()" in "computed" >>> style attribute of "div.l-pixel" in ""
v-on:(完整語法)或@(簡寫)用于綁定事件處理程序,并且click方法中div.l-pixel綁定的click事件onPixelClick。
該方法將pixel-click使用其顏色信息發布事件,畫布組件將偵聽該顏色信息。
main.jsimport Vue from "vue"; import NCanvas from "canvas"; new Vue({ components: {NCanvas}, el: "#main-canvas", template: "", data() { return { pixelData: null, colors: null } }, created() { const C = "C"; //Hat & Shirt const B = "B"; //Brown Hair & Boots const S = "S"; //Skin Tone const O = "O"; //Blue Overalls const Y = "Y"; //Yellow Buckles const W = "W"; //White Gloves const _ = "_"; this.pixelData = [ [_, _, _, _, _, _, _, _, _, _, _, _, _, _], [_, _, _, _, C, C, C, C, C, _, _, _, _, _], [_, _, _, C, C, C, C, C, C, C, C, C, _, _], [_, _, _, B, B, B, S, S, B, S, _, _, _, _], [_, _, B, S, B, S, S, S, B, S, S, S, _, _], [_, _, B, S, B, B, S, S, S, B, S, S, B, _], [_, _, B, B, S, S, S, S, B, B, B, B, _, _], [_, _, _, _, S, S, S, S, S, S, S, _, _, _], [_, _, _, C, C, O, C, C, C, C, _, _, _, _], [_, _, C, C, C, O, C, C, O, C, C, C, _, _], [_, C, C, C, C, O, O, O, O, C, C, C, C, _], [_, W, W, C, O, Y, O, O, Y, O, C, W, W, _], [_, W, W, W, O, O, O, O, O, O, W, W, W, _], [_, W, W, O, O, O, O, O, O, O, O, W, W, _], [_, _, _, O, O, O, _, _, O, O, O, _, _, _], [_, _, B, B, B, _, _, _, _, B, B, B, _, _], [_, B, B, B, B, _, _, _, _, B, B, B, B, _]]; this.colors = { [C]: "255, 0, 0", [B]: "100, 50, 0", [S]: "255, 200, 150", [O]: "0, 0, 255", [Y]: "255, 255, 0", [W]: "255, 255, 255", [_]: "229, 230, 232"}; } });
像素初始化的代碼寫在canvas.vue組件里,在這里,我們可以看到為canvas.vue屬性提供的數據。this.pixelData包含任意顏色的像素名稱,this.colors是包含RGB值的顏色字典(JavaScript對象)。(可以通過創建class Color,包含顏色名稱和RGB信息來修改)。
canvas.vue從main.js中使用了v-for來渲染pixelData。
pixel注冊的組件component: { NPixel },等同于components: {"n-pixel": NPixel} ,并且前綴n-用于防止組件名稱沖突,以防萬一pixel已經注冊為全局組件。
在n-pixel中的v-for,col是顏色名稱(即,“C”,“_”),其是來自main.js和 :color="colors[col]"發送一個RGB值(即“255,255,255”),以一個pixel組件。colIndex是當前項目(0,1,2,...)的索引。它被傳遞給key屬性,Vue.js需要一個唯一的值v-for 。
@pixel-click="onPixelClick"pixel-click從pixel組件偵聽事件并onPixelClick更改字典中的顏色(JavaScript對象,this.colors 而不是遍歷整個二維數組this.pixelData ,并通過反應性,像素的背景顏色更新!
后續如果您想進一步探索Vue.js,我建議您繼續閱讀他們的文章,甚至可以去看官方api并且自己動手寫更多東西。還有一個很不錯的免費系列視頻 - []()學習拉拉斯卡特的?Learn Vue 2: Step By Step(Vue 2:一步一步)。
在我看來,使用Vue.js來編寫一些小應用程序來更好地了解庫或框架,這樣對你很有幫助的。您可以找到一個有趣的Demo或將您以前的代碼的一部分轉換為新的庫。在你提煉了自己的代碼之后,您會發現不同庫或框架轉換并非是件容易的事情,尤其對比了它們的優點和缺點通常不是一下子就能理清楚的。
加油!!!!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85232.html
摘要:從游戲界的角度來說人工智能技術的發展可以為游戲帶來什么改變和收益。使用人工智能技術可以給游戲帶來更多更好的內容,也可以減輕游戲開發的成本。 作者:蘇博覽,騰訊互動娛樂高級研究員商業轉載請聯系騰訊WeTest獲得授權,非商業轉載請注明出處。原文鏈接:https://wetest.qq.com/lab/view/412.html 本文內容包含以下章節: Chapter 1.3 Why Ga...
摘要:基于時間的動畫算法其實思路和實現都很簡單。而基于時間的動畫算法要注意邊緣時間的損失,最好采取積累時間,然后分固定片更新動畫的方式。 作者:戴嘉華 轉載請注明出處,保留原文鏈接和作者信息 目錄 前言 基于幀的動畫算法(Frame-based) 基于時間的動畫算法(Time-based) 改良基于時間的動畫算法 總結 前言 前段時間無聊或有聊地做了幾個移動端的HTML5游戲。...
摘要:模塊安裝統一用的豆瓣鏡像源模塊名。圖片素材背景音樂字體可修改開始敲代碼運行程序。超級瑪麗源碼基地配置音樂文字等。 導語? 哈嘍!哈嘍!我是木木子?,今日游戲更新——超級瑪麗華麗上線?啦! 超級瑪麗有多少人還記得這款經典游戲?對于90、00后應該不大熟悉,但多多少少印象中見過 那個戴帽子的大胡...
閱讀 3209·2021-11-12 10:36
閱讀 1258·2019-08-30 15:56
閱讀 2442·2019-08-30 11:26
閱讀 550·2019-08-29 13:00
閱讀 3608·2019-08-28 18:08
閱讀 2748·2019-08-26 17:18
閱讀 1892·2019-08-26 13:26
閱讀 2431·2019-08-26 11:39