【教程】太守的GUI教程(基础入门)

虽然我把图片GUI单分出来讲解,但是实际上给GUI设置图片和设置文字一样,都属于GUI的属性。但是我们需要做的第一步,是从材质包内读取GUI材质。
android.graphics.drawable.Drawable.createFromStream(ModPE.openInputStreamFromTexturePack("assets/images/GUI/饰品栏null.png"),null);
上面是我从我的TerrariaModPE中拿出来的一个例子。

楼主 宇智波家老大  发布于 2017-03-05 14:43:00 +0800 CST  
可以看到,我们使用了一条启动器函数:ModPE.openInputStreamFromTexturePack。它的参数即为读取的材质的路径。
为了方便调用,我们把它赋值给一个变量。
var a=android.graphics.drawable.Drawable.createFromStream(ModPE.openInputStreamFromTexturePack("assets/images/GUI/饰品栏null.png"),null);
然后,我们使用setBackground函数来设置这张图片为按钮的背景。

楼主 宇智波家老大  发布于 2017-03-05 14:43:00 +0800 CST  
控件名.setBackground(a);

再次进入游戏,可以发现你的GUI已经将这张图片设置成了它的背景。

楼主 宇智波家老大  发布于 2017-03-05 14:44:00 +0800 CST  
如果说你的ModPE里除了GUI就没有别的需要材质了,单独为这一个贴图做个材质包太麻烦,也不方便导入。虽然现在已经有了modpkg,但这个方法还是讲一下的好。
那么,base64究竟是什么?

楼主 宇智波家老大  发布于 2017-03-06 21:05:00 +0800 CST  
下面是百度百科对base64的解释。
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
(以上取自百度)
我们把图片转化为base64代码,再直接在ModPE内将其解码为图片。这样其他的玩家可以做到不需要材质包就能使用图片GUI。

楼主 宇智波家老大  发布于 2017-03-06 21:06:00 +0800 CST  
我们可以使用这个算法来获取图片base64编码:
(网页算法,未测试)
function getBase64Image(img){
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
var dataURL = canvas.toDataURL("image/"+ext); return dataURL;
}

楼主 宇智波家老大  发布于 2017-03-06 21:07:00 +0800 CST  
妈的死妈百度老吞

楼主 宇智波家老大  发布于 2017-03-06 21:08:00 +0800 CST  

楼主:宇智波家老大

字数:4951

发表时间:2017-03-02 17:05:00 +0800 CST

更新时间:2019-01-29 16:00:33 +0800 CST

评论数:55条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看