Project1
标题:
(已解决)关于MZ图片鼠标互动
[打印本页]
作者:
火锅深处
时间:
2021-2-6 18:19
标题:
(已解决)关于MZ图片鼠标互动
本帖最后由 火锅深处 于 2021-2-6 21:15 编辑
解决了。把2楼老鹰红色圈出那句替换成了这个return bx>0 &&bx<pic.width&&by>0&&by<pic.height;
=====================================================
呃,我没有发错区。只是觉得这个问题是不是和图片格式这种通常问题有关。(以及MZ区太冷了我觉得可能没人回答
这个插件就是能让鼠标悬浮或点击图片的时候发生公共事件。
但是,它好像就只对png里有图案的部分有反应,点击旁边的透明部分没用。像我现在这种镂空的选项图片,点在那个小横线上方两个像素左右的地方它都没反应...对精确度要求这么高的话操作手感太糟糕了。
start_active.png
(10 KB, 下载次数: 4)
下载附件
保存到相册
2021-2-6 18:03 上传
所以说是png和鼠标互动的只能是非透明部分呢,还是说把“整张图片(透明与非透明都算)”作为鼠标互动的对象也行?
(因为不是技术区所以不用说具体的解决方法也没问题,我就是想问问这个和图片自身的格式有没有关系)
看到MV版本有个类似的东西
https://rpg.blue/thread-404083-1-1.html
可能是这个的逆操作版本...
插件本体(MIT公约)
回过头看了作者的网站,MV版是由“透明区域是否判定”的选项的,所以估计MZ版本以后倒是也会更新
(感觉问题解决到这个地步好像已经不适合水区了)
MV
load_active.png
(10.09 KB, 下载次数: 6)
下载附件
保存到相册
2021-2-6 18:03 上传
作者:
百里_飞柳
时间:
2021-2-6 20:29
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
;
}
它贴心帮你判定了,点击处不为透明像素才算成功点击
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1