设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2215|回复: 5
打印 上一主题 下一主题

[有事请教] (已解决)关于MZ图片鼠标互动

[复制链接]

Lv5.捕梦者

梦石
18
星屑
13520
在线时间
1708 小时
注册时间
2017-1-12
帖子
1771

开拓者

跳转到指定楼层
1
发表于 2021-2-6 18:19:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 火锅深处 于 2021-2-6 21:15 编辑

解决了。把2楼老鹰红色圈出那句替换成了这个return bx>0 &&bx<pic.width&&by>0&&by<pic.height;
=====================================================
呃,我没有发错区。只是觉得这个问题是不是和图片格式这种通常问题有关。(以及MZ区太冷了我觉得可能没人回答
这个插件就是能让鼠标悬浮或点击图片的时候发生公共事件。
但是,它好像就只对png里有图案的部分有反应,点击旁边的透明部分没用。像我现在这种镂空的选项图片,点在那个小横线上方两个像素左右的地方它都没反应...对精确度要求这么高的话操作手感太糟糕了。

所以说是png和鼠标互动的只能是非透明部分呢,还是说把“整张图片(透明与非透明都算)”作为鼠标互动的对象也行?
(因为不是技术区所以不用说具体的解决方法也没问题,我就是想问问这个和图片自身的格式有没有关系)
看到MV版本有个类似的东西https://rpg.blue/thread-404083-1-1.html可能是这个的逆操作版本...

插件本体(MIT公约)


回过头看了作者的网站,MV版是由“透明区域是否判定”的选项的,所以估计MZ版本以后倒是也会更新 (感觉问题解决到这个地步好像已经不适合水区了)
MV

load_active.png (10.09 KB, 下载次数: 6)

load_active.png

Lv6.析梦学徒

老鹰

梦石
40
星屑
33387
在线时间
6550 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

2
发表于 2021-2-6 20:29:37 | 只看该作者
423行的代码里
        isOnPicturePos(x = TouchInput.x, y = TouchInput.y) {
            const pic = this._picture;
            if (!pic.bitmap || !pic.bitmap.isReady() || pic.scale.x === 0 || pic.scale.y === 0) {
                return false;
            }
            if (this.isTouchPosInFrameWindow()) {
                return true;
            }
            const dx  = this.getTouchScreenX(x) - pic.x;
            const dy  = this.getTouchScreenY(y) - pic.y;
            const sin = Math.sin(-pic.rotation);
            const cos = Math.cos(-pic.rotation);
            const bx = Math.floor(dx * cos + dy * -sin) / pic.scale.x + pic.anchor.x * pic.width;
            const by = Math.floor(dx * sin + dy * cos) / pic.scale.y + pic.anchor.y * pic.height;
            return pic.bitmap.getAlphaPixel(bx, by) !== 0;
        }
它贴心帮你判定了,点击处不为透明像素才算成功点击

点评

成功了...(  发表于 2021-2-6 21:11
啊,我是连基本语法都完全不懂的程度。不过我试试(作死开始)。  发表于 2021-2-6 21:07
bx和by就是计算了缩放、旋转、图片原点变换等之后的在图片坐标上的位置,判定下这个坐标是否在(0, pic.width) (0, pic.height) 之中?  发表于 2021-2-6 20:59
这句我顺藤摸瓜地找到了,然后不知道怎么改...  发表于 2021-2-6 20:44
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-19 18:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表