| 赞 | 58 |
| VIP | |
| 好人卡 | |
| 积分 | 12 |
| 经验 | |
| 最后登录 | 2023-5-29 |
| 在线时间 | 1017 小时 |
- 梦石
- 0
- 星屑
- 1232
- 在线时间
- 1017 小时
- 注册时间
- 2011-4-30
- 回帖
- 1464
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 汪汪 于 2015-12-6 14:52 编辑
[fold=人物生成器
大概就是类似mv的人物生成器
大概挺没用的
光设置就让人会疯的吧
目前这个大概算是个核心吧.....
]
[pre lang="javascript" file="ww_makeRenwu.js"]//=============================================================================
// ww_makeRenwu.js
//=============================================================================
/*:
* @plugindesc 人物生成
* @author wangwang
*
*
* @help
* 使用方法 bitmap = Bitmap.makeRenwu(badds)
*
*
* 参数设置 解释):
* badds = [ ] 数组
* 图片的宽和高(必填)
* badds.width=144;
* badds.height=192;
* 数组内的是一个个对象 {}
* 对象设置:
* bitmap:"E:/rpgmv/Project1/img/1.png" //基础文件 路径
* change:[ ] //基础文件修改 数组
* bitmap_c:"E:/rpgmv/Project1/img/2.png", //判定修改文件
* change_c:[] //基于判定文件的修改 数组
* change 内的是一个个修改方式对象{}
* 对象设置 修改模式
* hsla:{h:100,s:10,l:10,a:0}
* HSL色彩模式修改(增加值),h色相(360度循环)、s饱和度(255)、l明度(255) a不透明度(255)
* rgba:{r:0,g:10,b:20,a:26}
* RGB颜色模式修改(增加值),r红色(255) g绿色(255) b蓝色(255) a不透明度(255)
* 可只输入部分 如 hsla:{h:100} , {rgba:{r:100}
* change_c 内的是一个个修改方式对象{}
* 对象必须设置判定条件 ,可以设置修改模式
*
* 判定条件 :
* pd:{r:199,g:132,b:7,a:255} 当是这个颜色时修改基础文件
* 可只输入部分 如 pd:{r:199}
* 举例 { pd:{r:199,g:132,b:7,a:255} , hsla:{h:100} }
*
*
* 举例:
* badds=[
* { bitmap:"E:/rpgmv/Project1/img/1.png",
* change:[],
* bitmap_c:"E:/rpgmv/Project1/img/2.png",
* change_c:[ {pd:{r:199,g:132,b:7}, hsla:{h:100}},],
* }
* ];
* badds.width=144;
* badds.height=192;
*
*
*
*/
(function() {
Bitmap.makeRenwu = function (badds) {
if ( badds.length > 0){
var bitmap = new Bitmap(badds.width,badds.height)
bitmap.badds=[]
}else{
var bitmap = new Bitmap()
return bitmap
}
bitmap.badds.loading = true
for (var i =0; i<badds.length ;i++){
if (badds){
bitmap.badds ={};
if (badds.bitmap){
bitmap.badds.bitmap = Bitmap.load( badds.bitmap )
bitmap.badds.bitmap.addLoadListener(
function() {
if(bitmap.isok(bitmap.badds)){ bitmap.makeRenwu2()}
}
);
if (badds.change){
bitmap.badds.change = badds.change
}
if (badds.bitmap_c && badds.change_c){
bitmap.badds.change_c = badds.change_c
bitmap.badds.bitmap_c = Bitmap.load( badds.bitmap_c )
bitmap.badds.bitmap_c.addLoadListener(
function() {
if(bitmap.isok()){ bitmap.makeRenwu2()}
}
);
}
}
}
}
bitmap.badds.loading = false
if(bitmap.isok()){ bitmap.makeRenwu2()}
return bitmap;
}
Bitmap.prototype.isok =function (){
var badds = this.badds
if (badds.loading){return false}
for (var i=0 ; i< badds.length;i++ ){
if (badds){
if (badds.bitmap && badds.bitmap._isLoading ){return false}
if (badds.bitmap_c && badds.bitmap_c._isLoading){return false}
}
}
return true
}
Bitmap.prototype.makeRenwu2=function () {
var badds = this.badds
for (var i=0 ; i< badds.length;i++ ){
if (badds){
if (badds.bitmap) {
if (badds.change){
badds.bitmap.bitmap_change(badds.change )
}
if (badds.bitmap_c && badds.change_c){
badds.bitmap.bitmap_change_c(badds.bitmap_c,badds.change_c )
}
this.blt(badds.bitmap,
0,0,badds.bitmap.width,badds.bitmap.height,
0,0,this.width,this.height)
}
}
}
}
Bitmap.prototype.bitmap_change = function(change) {
var change = change
if ( change.length > 0 && this.width > 0 && this.height > 0) {
var context = this._context;
var imageData = context.getImageData(0, 0, this.width, this.height);
var pixels = imageData.data;
for (var i = 0; i < pixels.length; i += 4) {
var rgba = [pixels[i +0],pixels[i +1],pixels[i +2], pixels[i +3]]
rgba = Bitmap.rgba_change(rgba,change)
pixels[i + 0] = rgba[0];
pixels[i + 1] = rgba[1];
pixels[i + 2] = rgba[2];
pixels[i + 3] = rgba[3];
}
context.putImageData(imageData, 0, 0);
this._setDirty();
}
};
Bitmap.prototype.bitmap_change_c = function(bitmap_c,change_c) {
var change = change_c
var bitmap = bitmap_c
if ( change && bitmap && change.length > 0 &&
bitmap.width>0 && bitmap.height>0 &&
this.width > 0 && this.height > 0) {
var context = this._context;
var width = this.width > bitmap.width ? bitmap.width : this.width
var height = this.height > bitmap.height ? bitmap.height : this.height
var imageData = context.getImageData(0, 0, width, height);
var imageData_c = bitmap.context.getImageData(0, 0, width, height);
var pixels = imageData.data;
var pixels_c = imageData_c.data;
for (var i = 0; i < pixels_c.length; i += 4) {
var rgba_c = [pixels_c[i +0],pixels_c[i +1],pixels_c[i +2], pixels_c[i +3]]
var rgba = [pixels[i +0],pixels[i +1],pixels[i +2], pixels[i +3]]
rgba = Bitmap.rgba_change2(rgba,rgba_c,change)
pixels[i + 0] = rgba[0];
pixels[i + 1] = rgba[1];
pixels[i + 2] = rgba[2];
pixels[i + 3] = rgba[3];
}
context.putImageData(imageData, 0, 0);
this._setDirty();
}
};
Bitmap.rgba_change = function (rgba,change) {
var rgba = rgba
var change = change
for (var i =0 ; i<change.length;i++){
if (change){
if (change.rgba ){
rgba = Bitmap.rgba_Rgba_change(rgba,
change.rgba.r,
change.rgba.g,
change.rgba.b,
change.rgba.a
)
}
if (change.hsla){
rgba = Bitmap.rgba_Hsla_change(rgba,
change.hsla.h,
change.hsla.s,
change.hsla.l,
change.hsla.a
)
}
}
}
return rgba;
}
Bitmap.rgba_change2 = function (rgba,rgba_c,change) {
var rgba = rgba
var rgba_c = rgba_c
var change = change
for (var i =0 ; i<change.length;i++){
if (change){
if (change.pd && Bitmap.rgba_change_pd(rgba_c,change.pd) ){
if (change.rgba ){
rgba = Bitmap.rgba_Rgba_change(rgba,
change.rgba.r,
change.rgba.g,
change.rgba.b,
change.rgba.a
)
}
if (change.hsla){
rgba = Bitmap.rgba_Hsla_change(rgba,
change.hsla.h,
change.hsla.s,
change.hsla.l,
change.hsla.a
)
}
}
}
}
return rgba;
}
Bitmap.rgba_change_pd = function (rgba,pd) {
if (isFinite(pd.r) && rgba[0] != pd.r ){ return false }
if (isFinite(pd.g) && rgba[1] != pd.g ){ return false }
if (isFinite(pd.b) && rgba[2] != pd.b ){ return false }
if (isFinite(pd.a) && rgba[3] != pd.a ){ return false }
return true;
}
Bitmap.rgba_Rgba_change = function (rgba,r,g,b,a) {
if (r){ rgba[0] = (rgba[0] + r).clamp(0,255)}
if (g){ rgba[1] = (rgba[1] + g).clamp(0,255)}
if (b){ rgba[2] = (rgba[2] + b).clamp(0,255)}
if (a){ rgba[3] = (rgba[3] + a).clamp(0,255)}
return [rgba[0],rgba[1], rgba[2],rgba[3]];
}
Bitmap.rgba_Hsla_change = function (rgba ,h,s,l,a) {
var hsl = Bitmap.rgbToHsl(rgba[0], rgba[1], rgba[2]);
if (h){ hsl[0] = (((hsl[0] + h)% 360)+360)%360}
if (s){ hsl[1] = (hsl[1] + s).clamp(0,255)}
if (l){ hsl[2] = (hsl[2] + l).clamp(0,255)}
if (a){ rgba[3] = (rgba[3] + a).clamp(0,255)}
var rgb = Bitmap.hslToRgb(hsl[0], hsl[1], hsl[2]);
return [rgb[0],rgb[1], rgb[2],rgba[3]]
}
Bitmap.rgbToHsl = function (r, g, b) {
var cmin = Math.min(r, g, b);
var cmax = Math.max(r, g, b);
var h = 0;
var s = 0;
var l = (cmin + cmax) / 2;
var delta = cmax - cmin;
if (delta > 0) {
if (r === cmax) {
h = 60 * (((g - b) / delta + 6) % 6);
} else if (g === cmax) {
h = 60 * ((b - r) / delta + 2);
} else {
h = 60 * ((r - g) / delta + 4);
}
s = delta / (255 - Math.abs(2 * l - 255)) * 255 ;
}
return [h, s, l];
}
Bitmap.hslToRgb =function (h, s, l) {
var c = (255 - Math.abs(2 * l - 255)) * s / 255;
var x = c * (1 - Math.abs((h / 60) % 2 - 1));
var m = l - c / 2;
var cm = c + m;
var xm = x + m;
if (h < 60) {
return [cm, xm, m];
} else if (h < 120) {
return [xm, cm, m];
} else if (h < 180) {
return [m, cm, xm];
} else if (h < 240) {
return [m, xm, cm];
} else if (h < 300) {
return [xm, m, cm];
} else {
return [cm, m, xm];
}
}
})();
[/pre]
[/fold]
示例:
然而有谁能把图层排列一下...
|
评分
-
查看全部评分
|