Project1

标题: 求问插件中显示图片的方法 [打印本页]

作者: dujian15    时间: 2016-1-4 22:51
标题: 求问插件中显示图片的方法
求问插件中显示图片的方法,或者系统默认插件中可供阅读的代码。

如果哪位老师能大概说明一下思路 就更好了。
作者: trentswd    时间: 2016-1-4 23:09
本帖最后由 trentswd 于 2016-1-4 23:27 编辑

不知道你说的图片是什么,如果是说事件里面的显示图片,请参阅Interpreter里面的函数

如果指的是用sprite显示一个bitmap
注意以下代码全是伪代码,我并没有调试过

1. 载入bitmap
var bitmap = ImageManager.loadBitmap('img/picture/', 'pic', 0, true);

2 确认bitmap载入完成,或者使用addlistener增加回调监听
if(bitmap.isReady())
{
// do something
}

bitmap.addLoadListener(function(){
// do something
});

3 创建sprite
var sprite = new Sprite();
sprite.bitmap = bitmap; //将上面的bitmap赋到sprite.bitmap里面
sprite.setFrame(0,0, sprite.bitmap.width, sprite.bitmap.height);//设置显示范围

4 将sprite作为子节点放到当前已经在渲染的container或者sprite中。
例如当前的scene就是一个很好的父节点
if(SceneManager._scene)
{
SceneManager._scene.addChild(sprite);
}

下面是真代码,插在事件里面测试通过
JAVASCRIPT 代码复制
  1. var bitmap = ImageManager.loadBitmap('img/faces/', 'Actor1', 0, true);
  2. bitmap.addLoadListener(function(){
  3.   var sprite = new Sprite();
  4.   sprite.bitmap = bitmap;
  5.   sprite.setFrame(0,0,bitmap.width, bitmap.height);
  6. if(SceneManager._scene)
  7. {
  8. SceneManager._scene.addChild(sprite);
  9. }
  10. });

作者: dujian15    时间: 2016-1-5 10:27
trentswd 发表于 2016-1-4 23:09
不知道你说的图片是什么,如果是说事件里面的显示图片,请参阅Interpreter里面的函数

如果指的是用sprite ...

实在是太全面了,就是因为之前的代码太过分散,很多尝试写的代码调不通,这太好了。
作者: dujian15    时间: 2016-1-5 10:31
trentswd 发表于 2016-1-4 23:09
不知道你说的图片是什么,如果是说事件里面的显示图片,请参阅Interpreter里面的函数

如果指的是用sprite ...

另外请问,在窗口中显示图片,一定要使用精灵类么?

因为js脚本中代码的注释实在是太少,不知道操作精灵的几个常用的方法都有什么。
作者: 夏末渐离    时间: 2016-1-5 11:40
本帖最后由 夏末渐离 于 2016-1-5 11:43 编辑





摘自:F1帮助文档JS库Sprite
作者: trentswd    时间: 2016-1-5 12:42
虽然帮助文档里面有,不过推荐看看源码,看看它怎么实现的。窗口里面显示图片其实很多是直接blt到窗口的contents上,例如默认对话框的头像。
作者: dujian15    时间: 2016-1-5 22:16
请问应该用什么方法让精灵显示动态图,setFrame只能显示一张图片。

难道是定义多个精灵,然后通过addchild装进另一个精灵,然后用updata去遍历显示所有精灵?

这个帮助文档实在太坑,很多参数直接就放个object上去,而且连用例都没有,完全不知道应该怎么去试验。

举个例子,我想在一个窗口里显示一个精灵,比如人物的战斗图,站在那里不停晃动的那种,我应当怎么做,感谢师傅。
作者: dujian15    时间: 2016-1-6 10:42
trentswd 发表于 2016-1-5 12:42
虽然帮助文档里面有,不过推荐看看源码,看看它怎么实现的。窗口里面显示图片其实很多是直接blt到窗口的con ...

只是我看sprite也没有帧这个属性,setFrame只是指定了显示图片的位置与宽度,并没有说明是如何显示图片。
作者: 汪汪    时间: 2016-1-6 10:48
动态图的话,首先设置一个计数,确定是哪一帧,
当变化时,使用setFrame把需要部分的显示出来就好.


作者: dujian15    时间: 2016-1-6 11:03
trentswd 发表于 2016-1-4 23:09
不知道你说的图片是什么,如果是说事件里面的显示图片,请参阅Interpreter里面的函数

如果指的是用sprite ...

还是有些晕头了,本来就是脚本新手,插件里的注释基本为零,眼下除了改窗口坐标这种入门级的内容可以上隔壁翻ruby去还能蒙对一点,精灵这边基本上就看不懂。

我现在想找一找在窗口中显示玩家战斗中待机动作的方法,不知道师傅能否告知一二。
作者: trentswd    时间: 2016-1-6 12:58
setFrame本来就不是帧,而是sprite上显示的位图的范围,这个在上面也讲了
精灵这块大体上和rgss里面差不多,可以看作mv是用js把rgss里面的类实现一遍。
就像上面所说,用setFrame显示动画,比如你有两张32*32图,你把它横向拼在一起,那第一张图就是(0,0,32,32)第二张图就是(32,0,32,32)。在update函数里面用setFrame修改显示范围就可以达到动画的效果。如果不是很理解可以自己改改参数看看效果如何,这样比较直观。
这些mv代码里面都有的,比如窗口的暂停动画,可以全局搜索_pauseSign,看看它整个生命周期是怎么创建和刷新的。战斗图那块我还没仔细看,不过载入sv_actor里面的战斗图,然后用setFrame轮流显示左上角三个小格应该是没问题的
作者: tseyik    时间: 2016-1-6 13:25
你可看看別人怎様寫
トリアコンタン的PictureAnimation
PictureAnimation





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1