2009-7-25 22:57
57379170
求教 tjs 中 在layer 或者message层写字的方法
现在已知的是
drawText();
但是不知道控制字体以及大小的方法;
还有
processCh('');
同上
实际上的具体问题是
自己建了一个类
class miniLayer extends KAGLayer
{
//其中包括一些 诸如下述情况
var i;
var Messages=[];
var _maxMessageLayerNum=1;
for (i =1;i<=_maxMessageLayerNum;i++)
{
Messages[i]=new MessageLayer(window,this);
}
//当然这样可以用 诸如 addButton addSliderLayer等 MessageLayer的函数来构建这个 miniLayer。
//但是 关于文字的书写控制如何做
//drawText尝试了 可以写 但是不清楚控制字体的方法
//processCh()尝试了 ......但是没有效果。。。嘎嘎
}
现在这个类 的完成度 如下
//------自定义类 myLayer------
class miniLayer extends KAGLayer
{
var name;
var Messages=[]; //messages层
var Layers=[]; //layers层
var backGroundLayer; //背景层
var backGroundButtonLayer; //底层功能层
var _left,_top,_width,_height; //坐标 以及 大小
var _maxLayerNum; //最大layer数
var _maxMessageLayerNum; //最大messagelayer数
var _elm=%[]; //当前属性
var _Messages_elm=[]; //message层属性
var _Layers_elm=[]; //layer层属性
var _Messages_addelm=[]; //message层相对属性
var _Layers_addelm=[]; //layer层相对属性
//构造函数
function miniLayer(win,par,EXname)
{
name=EXname;
var elm=%[];
super.KAGLayer(win, par);
_left=0;
_top=0;
_width=400;
_height=300;
absolute = 100000;
opacity = 256;
visible = false;
_elm.left=_left;
_elm.top=_top;
_elm.width=_width;
_elm.height=_height;
_elm.index = absolute;
_elm.opacity = opacity;
_elm.visible = visible;
_maxLayerNum=0;
_maxMessageLayerNum=0;
// Layers[1] = newLayer(1);
// resetLayerOptions(1);
// Messages[1] = newMessageLayer(1);
// resetMessageLayerOptions(1);
Layers[0] = newLayer(0);
backGroundLayer = Layers[0];
resetLayerOptions(0);
Messages[0] = newMessageLayer(0);
backGroundButtonLayer = Messages[0];
resetMessageLayerOptions(0);
setSize(_width,_height);
setPos(_left,_top);
setButtons();
super.setOptions(_elm);
}
//析构函数
function finalize()
{
var i;
for (i=0;i<=_maxLayerNum;i++)
{
invalidate Layers[i];
}
for (i=1;i<=_maxMessageLayerNum;i++)
{
invalidate Messages[i];
}
super.finalize(...);
}
//--基本设定 --
function setOptions(elm)
{
_left=elm.left if elm.left !=void;
_top= elm.top if elm.top !=void;
_width=elm.width if elm.width != void;
_height=elm.height if elm.height !=void;
absolute = elm.index if elm.index !=void;
opacity = elm.opacity if elm.opacity !=void;
visible = elm.visible if elm.visible !=void;
_elm.left=_left;
_elm.top=_top;
_elm.width=_width;
_elm.height=_height;
_elm.index = absolute;
_elm.opacity = opacity;
_elm.visible = visible;
super.setOptions(_elm);
if (_elm.visible == false)
{
hide();
}
}
//--显示 --
function show()
{
var i;
visible = true;
_elm.visible=visible;
focus();
setMode();
for (i=0;i<=_maxLayerNum;i++)
{
Layers[i].visible = _Layers_elm[i].visible;
}
for (i=1;i<=_maxMessageLayerNum;i++)
{
Messages[i].visible = _Layers_elm[i].visible;
}
}
function hide()
{
var i;
visible=false;
_elm.visible=visible;
for (i=0;i<=_maxLayerNum;i++)
{
Layers[i].visible = false;
}
for (i=1;i<=_maxMessageLayerNum;i++)
{
Messages[i].visible = false;
}
removeMode();
}
function setButtons()
{
var elm=%[];
//------退出按钮------
var Bwidth=40;
elm.exp=name+".hide()";
elm.normal='xx';
elm.caption="x";
Messages[0].locate(_elm.width-Bwidth);
Messages[0].addButton(elm);
//------add other buttons
}
//--重置显示--
function reset()
{
var i;
super.setOptions(_elm);
for (i=0;i<=_maxLayerNum;i++)
{
Layers[i].setOptions(_Layers_elm[i]);
}
for (i=0;i<=_maxMessageLayerNum;i++)
{
Messages[i].setOptions(_Messages_elm[i]);
}
}
//--设定大小 --
function setSize(x,y)
{
var elm=%[];
_width = x;
_height = y;
_elm.width = x;
_elm.height = y;
elm.width = x;
elm.height = y;
super.setSize(...);
reset();
}
//--设定位置 --
function setPos(x,y)
{
var i;
var elm=%[];
_left = x;
_top = y;
elm.left = x;
elm.top = y;
_elm.left = elm.left;
_elm.top = elm.top;
super.setPos(...);
reset();
}
//新建message layer 元素
function newMessageLayer(num)
{
var templayer=new MessageLayer(kag, this, 'Message'+num, num, true);
_Messages_elm[num]=%[];
_Messages_addelm[num]=%[];
return templayer;
}
//新建 layer 元素
function newLayer(num)
{
var templayer=new CharacterLayer(kag, this, 'Layer'+num, num);
_Layers_elm[num]=%[];
_Layers_addelm[num]=%[];
return templayer;
}
//设定最大layer数
function setMaxLayerNum(num)
{
var i;
if(_maxLayerNum<num)
{
for (i=_maxLayerNum+1;i<=num;i++)
{
Layers[i]=newlayer(i);
}
}
else if(_maxLayerNum>num)
{
for (i=_maxLayerNum;i>num;i--)
{
invalidate Layers[i];
}
}
_maxLayerNum=num;
}
//设定最大messagelayer数
function setMaxMessageLayerNum(num)
{
var i;
if(_maxMessageLayerNum<num)
{
for (i=_maxMessageLayerNum+1;i<=num;i++)
{
Messages[i]=newMessagelayer(i);
}
}
else if(_maxMessageLayerNum>num)
{
for (i=_maxLayerNum;i>num;i--)
{
invalidate Messages[i];
}
}
_maxMessageLayerNum=num;
}
//设定 message layer属性
function resetMessageLayerOptions(num)
{
_Messages_elm[num].left = _elm.left;
_Messages_elm[num].top = _elm.top;
_Messages_elm[num].width = _elm.width;
_Messages_elm[num].height = _elm.height;
_Messages_elm[num].opacity = _elm.opacity;
_Messages_elm[num].index = _elm.index + num*100 + 50;
_Messages_elm[num].visible = true;
_Messages_addelm[num].left = 0;
_Messages_addelm[num].top = 0;
_Messages_addelm[num].width = _elm.width;
_Messages_addelm[num].height = _elm.height;
_Messages_addelm[num].opacity = _elm.opacity;
_Messages_addelm[num].index = num*100+50;
_Messages_addelm[num].visible = _elm.visible;
}
function setMessageLayerOptions(num,elm)
{
_Messages_elm[num].left = (_elm.left + elm.left) if (elm.left != void);
_Messages_elm[num].top = (_elm.top + elm.top) if (elm.top !=void);
_Messages_elm[num].width = elm.width if (elm.width !=void);
_Messages_elm[num].height = elm.height if (elm.height !=void);
_Messages_elm[num].opacity = elm.opacity if (elm.opacity != void);
_Messages_elm[num].index = (_elm.index + elm.index) if (elm.index != void);
_Messages_elm[num].visible = elm.visible if elm.visible !=void;
Messages[num].setOptions(_Messages_elm[num]);
reset();
}
//设定 layer 属性
function resetLayerOptions(num)
{
_Layers_elm[num].left = _elm.left;
_Layers_elm[num].top = _elm.top;
_Layers_elm[num].width = _elm.width;
_Layers_elm[num].height = _elm.height;
_Layers_elm[num].opacity = _elm.opacity;
_Layers_elm[num].index = _elm.index + num*100;
_Layers_elm[num].visible = true;
_Layers_addelm[num].left = 0;
_Layers_addelm[num].top = 0;
_Layers_addelm[num].width = _elm.width;
_Layers_addelm[num].height = _elm.height;
_Layers_addelm[num].opacity = _elm.opacity;
_Layers_addelm[num].index = num*100+50;
_Layers_addelm[num].visible = _elm.visible;
}
function setLayerOptions(num,elm)
{
_Layers_elm[num].left = (_elm.left + elm.left) if (elm.left != void);
_Layers_elm[num].top = (_elm.top + elm.top) if (elm.top !=void);
_Layers_elm[num].width = elm.width if (elm.width !=void);
_Layers_elm[num].height = elm.height if (elm.height !=void);
_Layers_elm[num].opacity = elm.opacity if (elm.opacity != void);
_Layers_elm[num].index = (_elm.index + elm.index) if (elm.index != void);
_Layers_elm[num].visible = elm.visible if elm.visible != void;
Layers[num].setOptions(_Layers_elm[num]);
reset();
}
}
2009-7-25 23:03
57379170
因为没有 写 在message层写字的function
测试中 在 新建的 实例中 直接操作如下
*start
@iscript
var myLayer= new miniLayer(kag,kag.fore.base,'myLayer');
myLayer.hide();
myLayer.Messages[0].drawText(100,100,'日你妹啊啊啊啊啊啊啊',0xffff00);
myLayer.show();
@endscript
@val
[link target=*end]返回[endlink]
[s]
*end
@jump target=*start;
确实可以写一些 字出来 但是 不知道怎么调整字体 大小 什么的。。
[[i] 本帖最后由 57379170 于 2009-7-26 10:12 编辑 [/i]]
2009-7-25 23:15
57379170
其实 总体思想是 想自己 包装一下
方便以后建立一些功能模块 比如说 config save/load cg memory 等模块 也可以[history enabled = false output =true]
然后自己写 history样式
当然 kag 层面也可也做 但总感觉 看着一堆的 @ 特别恶心。。。
还是特别喜欢 一个东西 直接 new 一下就好了的感觉。。。
2009-7-25 23:27
57379170
接着再 舔脸 求一些东西
如果要在类中 添加 鼠标事件 具体的做法是怎样。
自己也尝试了一个
function onMouseDown(x, y, button)
{
if(button == mbRight) hide();
}
但是发现没有虾米效果
同时看 history layer 发现一些 比如说 focus() setMode() removeMode();
求意义 以及用法
具体想做 出一个模块 可以和 对话并行
简单的说就是 当模块打开的时候 在 模块范围
比如说 大小(800,600)的窗口 位置是(500,0),大小为(300,100)的myLayer
需要做的是
1.在 myLayer范围内 的鼠标活动 不会导致对话继续 而是换成该模块内自定义的功能,比如说按住左键拖拽模块位置.
2. myLayer范围外 正常单击鼠标左键 还会继续读取剧本, 右键以及滚轮功能不消失,照常或是其他模块自定义的功能,比如说常见的右键菜单。
当然考虑过 用一个透明大按钮 覆盖住整个 myLayer的最底层,按钮作用就是startdrag();......当然只是最后手段了,希望能有比较正常的方法。
2009-7-25 23:32
57379170
先去睡了
明 起床 先尝试 透明大按钮的想法~
急求 drawText的 文字样式调整的做法。
2009-7-31 02:51
resty
文字样式设置好Layer下面的font成员吧
你前面说的太长了- -,你要做的事情我试过,好像都能做,问题也没遇到什么- -
页:
[1]
Powered by Discuz! Archiver 5.5.0
© 2001-2006 Comsenz Inc.