我有点奇怪的问题。有一个MovieClip我调整大小,但矢量图形不会随之调整大小。它是我的库中的一个Movieclip,我正在链接到它,当我将它插入我的舞台时,它调整得很好。
我已将MovieClip导出为名为TabTemplate
的AS对象,并且我将其扩展为名为Tab
的类。
我在其中定义的文本字段中设置了一些文本,并相应地调整了选项卡的大小。但图形不遵循:(
我不习惯AS3的做事方式,所以可能会有一些我错过的东西。
这是类代码:
package mypackage {
import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class Tab extends TabTemplate {
function Tab() {
}
/*** Getters/Setters ***/
public function set text( value:String ):void {
this.tabname.wordWrap = false;
this.tabname.autoSize = TextFieldAutoSize.LEFT;
this.tabname.text = value;
this.tabname.y = (this.mcMask.height - this.tabname.textHeight) /2;
this.tabname.x = this.tabname.y;
this.width = this.tabname.width + (this.tabname.x *2);
// I want to avoide to resize this after resizing the MovieClip
//this.mcMask.width = this.width;
}
public function get text():String {
return this.tabname.text;
}
}
}
这里实际上有两个问题:
1)textWidth
未返回正确的数字。我对文本有一些影子,我不知道是否有任何问题。但除此之外我只是使用普通Arial。
2)当我调整MovieClip的大小时,'Tab'+它的矢量背景的面具没有调整大小,就像在Flash中一样。
答案 0 :(得分:1)
TabTemplate显然出现了问题。也许最好从头开始。
我已经设置了一个不扩展TabTemplate的类,但是有一个实例作为成员。这样,您就可以将文本和图形分开,但应该能够使剪辑整体调整大小,而不是单独调整其大小。
有两件事对我们来说非常重要:
您必须从TabTemplate中删除文本字段。它将动态生成。如果要使用嵌入字体,则必须注意嵌入字体样式并设置TextFormat;我没有在那里放任何这样的代码。
您不能对矢量蒙版使用9切片缩放。如果您有需要9切片缩放的蒙版,则需要更改图形的设置方式,或者在ActionScript中创建绘图机制(例如,如果需要圆角),则在文本被删除时刷新集。
以下是代码:
package mypackage {
import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.text.TextFieldAutoSize;
public class Tab extends MovieClip {
private var background : TabTemplate = new TabTemplate();
private var tabname : TextField = new TextField ();
public function set text( value:String ):void {
tabname.type = TextFieldType.DYNAMIC;
tabname.multiline = tabname.wordWrap = false;
tabname.autoSize = TextFieldAutoSize.LEFT;
tabname.text = value;
tabname.y = (background.height - tabname.textHeight) *.5;
tabname.x = tabname.y;
addChild (tabname);
background.width = tabname.width + (tabname.x *2);
addChildAt (background, 0);
}
public function get text():String {
return tabname.text;
}
}
}
看看这是否适合您。如果没有,请告诉我您是否收到任何错误消息,然后从那里继续。
答案 1 :(得分:0)
尝试 this.tabname.textWidth
也许有帮助。
我相信你不应该设置整个Tab的宽度(你也要调整文本字段的大小),只设置TabTemplate类中的背景(或任何图形)元素。当您扩展此类时,您将可以访问这些实例。
罗布