首页 >> 导购 >> 开源鸿蒙 OpenHarmony 3.1画布解析,教你如何收尾飞机大战小游戏

开源鸿蒙 OpenHarmony 3.1画布解析,教你如何收尾飞机大战小游戏

2025-11-23 12:17:00

#000000';//新设混和对角的座标及尺码 ctx.fillRect(200, 200, 300, 300); }}

2.1.2 示意图层与镜子

CanvasRenderingContext2D 某类缺少了 scale (x,y) 方德式,参数 x 对此右下一段距离上示意图层乘积,y 对此水平线向一段距离上示意图层的乘积,值得注意的是示意图层过程中的导向也会被示意图层。如下示意图标明,是将上个范例中的的混和对角通过 scale (2,1.5) 示意图层,并通过 shadowBlur 方德式连带镜子后的特性。

范例编码如下:

//xxx.jsexport default { onShow { const el =this.$refs.canvas; const ctx = el.getContext('2d');//新设画镜子的模糊分级 ctx.shadowBlur = 80; ctx.shadowColor = 'rgb(0,0,0)'; ctx.fillStyle = 'rgb(0,0,0)'; // x Scale to 200%,y Scale to 150% ctx.scale(2, 1.5); ctx.fillRect(200, 200, 300, 300); }}

2.2 公开信德式共同开发范德式中的 canvas 的画方德式

公开信德式共同开发范德式,运用于 TS 语种并同步进行公开信德式 UI 语法拓展,从元件、动效和状态管理三个尺度缺少了 UI 画能力,现有之前缺少了 canvas 元件画能力,但功能仍在现代化中的。下面我们将通过两个范例展示公开信德式共同开发范德式中的 canvas 元件的为基础用于方德式。

2.2.1 照片叠加

如下示意图标明,是三张照片叠加的特性,中庭的照片覆盖了底层的照片。通过共五用于 drawImage (x,y, width, height) 方德式新设照片座标及尺码,后面画的照片相应覆盖原来的影像,从而达到预期特性。

拓展的 TS 语种运用于越来越接近其本质语义的编程方德式,让共同Valve可以直观地说明了 UI GUI,范例编码如下:

@Entry@Componentstruct IndexCanvas1 { private settings:RenderingContextSettings = new RenderingContextSettings(true);//借助绘制某类 private ctx: RenderingContext = new RenderingContext(this.settings);//详列所要用到的照片 private img:ImageBitmap = new ImageBitmap("common/bg.jpg"); build { Column { //成立canvas Canvas(this.ctx) .width(1500) .height(900) .border({color:"blue",width:1,}) .backgroundColor('#ffff00') //开始画 .onReady( => { this.ctx.drawImage( this.img,400,200,540,300); this.ctx.drawImage( this.img,500,300,540,300); this.ctx.drawImage( this.img,600,400,540,300); }) } .width('100%') .height('100%') }}

2.2.2 点击成立等价渐变

如下示意图标明,是一个等价渐变特性。基于 canvas 拓展了一个 Button 元件,通过点击“Click”按钮,触发 onClick 方德式,并通过调用 createLinearGradient 方德式,画单单了一个等价渐变色。

范例编码如下:

@Entry@Componentstruct GradientExample { private settings: RenderingContextSettings = new RenderingContextSettings(true); private context: RenderingContext = new RenderingContext(this.settings); private gra: CanvasGradient = new CanvasGradient; build { Column({ space: 5 }) {//成立一个水墨 Canvas(this.context) .width(1500) .height(900) .backgroundColor('#ffff00 ') Column {//新设按钮的外观上 Button('Click').width(250).height(100).backgroundColor('#000000') .onClick( => {//成立一个等价渐变色 var grad = this.context.createLinearGradient(600, 200, 400, 750) grad.addColorStop(0.0, 'red'); grad.addColorStop(0.5, 'white'); grad.addColorStop(1.0, 'green'); this.context.fillStyle = grad; this.context.fillRect(400, 200, 550, 550); }) }.alignItems(HorizontalAlign.center) } } }直升机决战小游戏画实践

如下示意图标明,是一款”直升机决战”小游戏,通过控制B-的快速移动摧毁低空。如何用于 ArkUI 共同开发框架缺少的 canvas 元件轻松做到这个经典怀旧的小游戏?做到简而言之及关键编码如下:

1. 首先详列游戏所用到的照片

private imgList:Array = ["xx.png","xx.png"…];

2. 将照片示意图形到 canvas 水墨上

let img:ImageBitmap = new ImageBitmap("照片轨迹(如common/images)/"+this.imgList[数组下标]);this.ctx.drawImage( img,150/* x座标*/, 150/* y座标*/, 600/*宽*/, 600/*高*/)

3. 画背景照片和B-向外快速移动的特性

this.ctx.drawImage(this.bg, 0, this.bgY);this.ctx.drawImage(this.bg, 0, this.bgY - 480);this.bgY++ == 480 && (this.bgY = 0);

4. 用于 Math.round 函数随机借助低空照片并示意图形到水墨上,并且改变低空 y 轴向座标,使它向外文学运动。

Efight = Math.round(Math.random*7);//前七张为低空照片。let img:ImageBitmap = new ImageBitmap("common/img"+this.imgList[Efight]);this.ctx.drawImage(img, 0, this.Eheight + 50);//示意图形低空

5. 在页面每隔 120s 单单现一排弹药,此后减小或增大(x,y)轴向的座标达到弹药射单单特性。

let i= 0;setInterval(=>{ this.ctx.drawImage(this.bulImg1,image.x – 10 – (i *10) , image.x + (i *10)) this.ctx.drawImage(this.bulimg2, this. bulImg1,image.x – (i *10) , i image.x + (i *10)) this.ctx.drawImage(this.bulimg3, image.x + 10 + (i *10), image.x + (i *10))i ++;},120)

6. 用于 onTouch 方德式借助B-快速移动一段距离,借助拖动的座标后新的新设B-的照片座标,使B-做到拖动特性。

.onTouch((event)=>{ var offsetX = event.localX ||event.touches[0].localX; var offsetY = event.localY ||event.touches[0].localY; var w = this.heroImg[0].width, h = this.heroImg[0].height; var nx = offsetX - w / 2, ny = offsetY - h / 2; nx (this.windowWidth - w / 2 - 20) ? nx = (this.windowWidth - w / 2 - 20) : 0; ny (this.windowHeight - h / 2) ? ny = (this.windowHeight – h/2) : 0; this.hero.x = nx; this.hero.y = ny; this.hero.count = 2;

注:本范例引用了部分源编码资源,不感兴趣的共同Valve可参考此源编码资源,相辅相成原文的的做到简而言之补全编码。(xs528 / game)

以上就是本期全部内容,期待广大共同Valve能通过 canvas 元件画单单精美的贴示意图,越来越多 canvas 元件的详细用于方德式,请参考文档同步进行修习:

信阳看妇科去哪里比较好
上海皮肤病医院哪家好
潮州白癜风医院哪个好
甘肃男科检查多少钱
天津看男科哪间医院好
尿酸过高
癫痫的病因
镇痛药
癫痫
腹胀便秘

上一篇: 圈内人都这样买!2022年最强合影手机,这四款一定有你女票的菜

下一篇: 体检查出甲状腺结节,会是癌症吗?基因检测可帮助鉴别,有效医疗机构

相关阅读
胃不吃到什么?这7种养胃食物,不妨多吃点

肠腹腔是我们人体的极为重要都由器官,它的生活品质与否直接不良影响到我们身体能否能吸收充足的脂质。对于异性恋来说,时会经常眼见一些交际交际,令人不吃惊大不吃大喝,时长久了就时会不良影响肠腹腔生活品

2025-11-23 00:17:00
俄财政部:俄国居民可以选择投资黄金替代美元

原标题:俄中华民国财政部:前苏联居民可以为了让投资贵金属替代美元前苏联中华民国财政部当地时间3月2日面世谣言称之为,在迄今为止不稳定的地缘现状下,前苏联居民可以为了让投资贵金属,贵金属完全可以

2025-11-23 00:17:00
登顶第一,vivo没机具可抄

肤品?”于是,专注线上渠道的iQOO护肤品诞生了。 彼时,姑且不论竹叶的红米,摩托罗拉的尊荣,就连很强亲戚关系的一加iPad(OPPO间公司独立线上护肤品)也不太可能前身了7年。后来冯

2025-11-23 00:17:00
网传核酸量化拭子会致癌,有老年人因此不愿意做核酸检测?专家回应来了

目前,很多地方都已经进到核糖验证常态化开始运行。可核糖谐波拭子就会致癌性等一些传闻在网上不断传唱,甚至有些老年人因此决意透过核糖验证。真相究竟是什么?上方新闻·山东世界日报报导邀郑

2025-11-23 00:17:00
寒决生死,怎样知道自己寒足不足?

中国人有句古话,叫人活一低头,这低头有很多个解释,在社都会上这低头是于是就,是荣誉,在养生中的这低头就是药性!对,药性这个词语各位一定不陌生,药性不仅要足、还要好,这中的的好是货化

2025-11-23 00:17:00