egret 不规则图片涂色,怎么处理呢?

一 游戏的前景交互功能:1.拖拽涂色(在花瓣上按下才可以涂色)2.在指定的花瓣区域内按下才可以涂色,并且不能涂到其他花瓣区域内二 游戏的技术点1.按下鼠标在某一个花瓣内涂色时(就只能在当前区域内涂色),即使移动鼠标到别的区域时,也不会影响到其他区域的颜色要划分要对应的区域把花瓣的svg 转换成对应的坐标 svg转坐标在egret里用egret.Shape根据坐标连线成一个封闭...
摘要由CSDN通过智能技术生成

一 游戏的前景
交互功能:
1.拖拽涂色(在花瓣上按下才可以涂色)
2.在指定的花瓣区域内按下才可以涂色,并且不能涂到其他花瓣区域内
在这里插入图片描述

二 游戏的技术点
1.按下鼠标在某一个花瓣内涂色时(就只能在当前区域内涂色),即使移动鼠标到别的区域时,也不会影响到其他区域的颜色

  • 要划分要对应的区域
    把花瓣的svg 转换成对应的坐标 svg转坐标
  • 在egret里用egret.Shape根据坐标连线成一个封闭的区域
    private initGoods():void {
         
    	const goodsData = new Goods(); // 存放svg坐标的类
    	goodsData.svgList.forEach((item, index) => {
         
    		const lineArea = new egret.Shape();
    		lineArea.touchEnabled = true;
    		lineArea.name = `goods${
           index + 1}`;
    		this.getGraph(lineArea, item);
    		this.addChild(lineArea);
    		// 涂色
    		this.drawLine(lineArea, item);
    	});
    }
    // 连线成为图形
    private getGraph(lineArea: egret.Shape, item):void {
         
    	lineArea.graphics.lineStyle(2, 0x000000);
        lineArea.graphics.beginFill(Number(this.fillColor));
    	// 连线规则
    	item.forEach(element => {
         
    		switch(element.type) {
         
    			case "moveTo":
    				lineArea.graphics.moveTo(element.props.x, element.props.y);
    				break;
    			case "lineTo":
    				lineArea.graphics.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值