qq229449388 发表于 2017-11-16 01:14:32

羔羊引擎之文本的把戏

本帖最后由 qq229449388 于 2017-11-16 01:50 编辑

羔羊引擎文本很简单,没什么多讲,但是对于开发的时候,有些东西大家总是随便弄,能出效果就可以了,套个皮就不知道你是笨蛋吗?
http://zsh.gyarea.com/GYLesson/swfs/lesson7/GYLiteAPI.swf
先讲正事,羔羊引擎的基础文本组件有3个,GYText,GYTextArea,GYTextInput
GYText就是普通文本,不可编辑,但是可以设置单行或者多行,如下


var gyText:GYText = new GYText(true);
gyText.border = true;
gyText.borderColor = 0xff9966;
gyText.width = 200;
gyText.x = 10;
gyText.y = 40;
gyText.text = "普通的单行文本我就不多说了,这里说说常见的多行文本,羔羊引擎的GYText创建时有参数,设置true为多行,默认为false。设置宽度,不设置高度则自动换行,这是布局常识";
win.addElement(gyText);



小白就不会不知道的东西,设置宽度,不设置高度,内容就会自动换行,所有引擎的组件都应该是这样

但是如果我想自己打换行,不希望设置宽度来控制换行,那你记得把文本设置为多行,并且wordWrap属性设置为flase

GYText跟其他组件没什么区别,这里要说明一下羔羊引擎的一些特性
1、在GYText里面,有个validFormat方法,这个方法的作用是,当设置文本的属性,例如颜色,大小,下划线等TextFormat有的属性,如果不调用validFormat是不会立刻能拿到正确的宽高的。因为这里文本属性做了延时处理。
2、GYText 有两个静态属性defualtSysFont 和defualtFont,分别是系统字体和默认嵌入字体,可以在主题初始化的时候设置一下,这样就可以设置全局的字体,优先使用嵌入字体,没有的情况下就使用系统字体,要注意到是如果选择嵌入字体,若又使用系统字体,则需要手动设置EmbedFonts为false,因为选择嵌入字体的那刻,每次创建GYText都会默认EmbedFonts为true。
3、padding属性和静态属性defautPadding,默认defaultPadding为5,这个属性是用来计算文本宽度的,因为文本的宽度和文本框有一定距离,所以用这个补偿计算,一般5是适合的,但是换字体就难说了,这两个属性的关系是,当padding为-1时使用defualtPadding,当defualtPadding也为-1的时候,就用_textFormat.size/2.5来计算,可以打开GYText源码看这个padding的get方法


public function get padding():int
                {
                        if(_padding == -1)
                        {
                              if(defualtPadding == -1)
                                        return int(int(_textFormat.size)/2.5);
                              return defualtPadding
                        }
                        return _padding;
                }GYTextInput输入文本,这个也跟其他组件一样的,没什么好说的,皮肤就一背景,当然自己可以扩展TextInputSkin实现更丰富的皮肤。

GYTextArea文本框组件,ediable控制是否可编辑,可以设置paddingTop,paddingRight,paddingLeft,paddingRight来增加边距,GYTextInput也可以,这里特别说明setPadding方法是一次性设置4个边距,这里里面同时算进来滚动条的宽度,所以隐藏滚动条的时候别觉得右边边距大,代码如下,特意设置skin给大家看看的
var gyInput:GYTextInput = new GYTextInput(new TextInputSkin(inputBitData,rect));
                        gyInput.x = 10;
                        gyInput.y = 300;
                        gyInput.prompt = "输入文本有prompt属性,没内容的时候显示就是prompt属性";
                        gyInput.promptText.color = 0x333333;
                        gyInput.textInput.color = 0;
                        gyInput.paddingLeft = 5;
                        gyInput.width = 400;
                        gyInput.height = 22;
                        win.addElement(gyInput);下面说说设置文本居中的一个问题,我经常看到有人设置文本居中是不设置宽度,直接用相对布局verticalCenter=0来操作的,相对布局的教程已经说明过,如果能不用,就避免滥用,这里面文本居中大可可以设置宽度,然后用align属性设置居中,完全能搞定,而且效果更好。代码如下,特意设置skin给大家看看的var rect:Scale9GridRect = new Scale9GridRect;
var textArea:GYTextArea = new GYTextArea(new TextAreaSkin(inputBitData,rect));
textArea.x = 240;
textArea.y = 40;
textArea.width = 200;
textArea.height = 200;
textArea.editable = true;
textArea.setPadding(20);
textArea.vScroller.verticalPolicy = 1;
textArea.text = "主题的TextArea你们已经见过了,现在换一个样式。从构造函数的参数传入TextAreaSkin,设置editable为true则可编辑,使用setPadding方法可以增加边距,现在我们设置为20边距看看,是不是内容变小了";
win.addElement(textArea);
页: [1]
查看完整版本: 羔羊引擎之文本的把戏

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)