如何让label中的字竖显示

canis 2009-02-19 09:36:33
在Flex中如何让label中的字竖显示,或者其他实现方法!

比如:我爱Flex
显示成:


F
l
e
x

不局限于label空间,如果其他空间可以显示的话,也请赐教!
...全文
2233 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
pilihou 2011-04-08
  • 打赏
  • 举报
回复
<s:Label x="10" y="50" text="客 户 注 册" width="50" height="212" fontSize="28" initialize="rotationText(event)" id="lab_log" color="#000093" fontWeight="bold" textAlign="center"/>
这样写就可以了,不用那么麻烦
pilihou 2011-04-08
  • 打赏
  • 举报
回复
加换行符就行了,一种是代码的\n,一种是mxml的
love2010liu 2011-04-08
  • 打赏
  • 举报
回复
把客户注册竖着显示
<s:Label x="10" y="50" text="客户注册" width="50" height="212" fontSize="28" initialize="rotationText(event)" id="lab_log" color="#000093" fontWeight="bold" textAlign="center"/>

private function rotationText(event:FlexEvent):void
{
var text:String = event.currentTarget.text;
var length:int = text.length;
var newText:String = "";
for(var i:int = 0; i < length; i++)
{
newText+=text.charAt(i)+"\r";
}
lab_log.text = newText;
}
Walf_ghoul 2011-04-06
  • 打赏
  • 举报
回复
竖排版!不是旋转啊,同学们看清问题!
寂寞空虚党 2010-12-10
  • 打赏
  • 举报
回复
帮顶,我也是同样问题
chinazhousheng 2010-10-29
  • 打赏
  • 举报
回复
采用 htmltext,加\br
me_kankan 2010-10-28
  • 打赏
  • 举报
回复
<mx:Label text="我爱FLEX" rotation="90" style="myTNR"/>
@font-face {
src:local("Times New Roman");
fontFamily: myTNR;
advancedAntiAliasing: true;
}

写错,style="myTNR"===》fontFamily="myTNR"
me_kankan 2010-10-28
  • 打赏
  • 举报
回复
<mx:Label text="我爱FLEX" rotation="90" style="myTNR"/>
@font-face {
src:local("Times New Roman");
fontFamily: myTNR;
advancedAntiAliasing: true;
}
passself 2010-10-26
  • 打赏
  • 举报
回复
我的资源中有竖行显示的字体资源,楼主可以下载一下
lijingzhong1987 2010-10-25
  • 打赏
  • 举报
回复
手动加\n
yijianxiangde100 2010-10-20
  • 打赏
  • 举报
回复
期待问题解决。
jueljust 2010-10-20
  • 打赏
  • 举报
回复
那个无敌长代码的能旋转非内嵌文字的话,麻烦冒个泡证实一下啊
我粗读一下,没看出来可以啊
jueljust 2010-10-20
  • 打赏
  • 举报
回复
label也是可以的
jueljust 2010-10-20
  • 打赏
  • 举报
回复
如果是你帖子里的现实方式,用一个textfield,设置得足够窄,同时打开wordwrap选项
如果还要英文字母横过来,那么字体必须嵌入,如果是有限字还是可以做的,如果是动态文字,中英文混合的话,那就不行了,除非你愿意写程序把中英文拆开,放在不同的textfield里,实现整体排版,环绕等特性。
清风水岸 2009-12-02
  • 打赏
  • 举报
回复
嗯,貌似herowach是最简单的方式了。
水中影子 2009-12-02
  • 打赏
  • 举报
回复
不会,帮顶!!!
ThornBird313 2009-12-02
  • 打赏
  • 举报
回复



override protected function measure():void
{
super.measure();
var textWidth:Number = textField.width;
var textHeight:Number = textField.height;
if (textField.text != _label)
{
textField.text = _label;
textField.scaleX = 1;
textField.scaleY = 1;
textWidth = textField.width;
textHeight = textField.height;
if (textField.width > 2880)
{
textField.scaleX = 2880 / textField.width;
textWidth = 2880;
}
if (textField.height > 2880)
{
textField.scaleY = 2880 / textField.height;
textHeight = 2880;
}
}
if (_position == "top" || _position == "bottom")
{
measuredMinWidth = textWidth;
measuredMinHeight = textHeight;
}
else
{
measuredMinWidth = textHeight;
measuredMinHeight = textWidth;
}
var paddingMetrics:EdgeMetrics = padding;
measuredWidth = measuredMinWidth + paddingMetrics.left + paddingMetrics.right;
measuredHeight = measuredMinHeight + paddingMetrics.top + paddingMetrics.bottom;
}

override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var g:Graphics = graphics;
g.clear();
g.lineStyle(0, 0x000000, 0);
g.beginFill(0xFFFFFF, 0);
g.drawRect(0, 0, unscaledWidth, unscaledHeight);
g.endFill();
changeSkins();
var n:int = skins.length;
for (var i:int = 0; i < n; i++)
{
var skin:IFlexDisplayObject = IFlexDisplayObject(skins[i]);
skin.move(0, 0);
skin.setActualSize(unscaledWidth, unscaledHeight);
}
var paddingMetrics:EdgeMetrics = padding;
var leftPadding:Number = 0;
var topPadding:Number = 0;
if (unscaledWidth > measuredMinWidth)
leftPadding = paddingMetrics.left;
else
leftPadding = (unscaledWidth - measuredMinWidth) / 2;
if (unscaledHeight > measuredMinHeight)
topPadding = paddingMetrics.top;
else
topPadding = (unscaledHeight - measuredMinHeight) / 2;
if (labelChanged)
{
bitmapData = null;
labelChanged = false;
}
// 注释掉下面的代码, 因为对于英文字体执行下面代码, 鼠标每次经过都会使文本加粗
/*
if (!bitmapData)
bitmapData = new BitmapData(Math.min(textField.width, 2880),
Math.min(textField.height, 2880), true, 0xFFFFFF);
*/
bitmapData = new BitmapData(Math.min(textField.width, 2880),
Math.min(textField.height, 2880), true, 0xFFFFFF);
var matrix:Matrix = new Matrix();
bitmapData.draw(textField, matrix);
if (bitmap)
removeChild(bitmap);
bitmap = new Bitmap(bitmapData, PixelSnapping.AUTO, true);
bitmap.x = 0;
bitmap.y = 0;
switch (_position)
{
case ("left"):
bitmap.rotation = 90;
bitmap.x = bitmap.x + bitmapData.height + leftPadding;
bitmap.y = bitmap.y + topPadding;
break;
case ("right"):
bitmap.rotation = -90;
bitmap.x = bitmap.x + leftPadding;
bitmap.y = bitmap.y + bitmapData.width + topPadding;
break;
case ("top"):
bitmap.rotation = -180;
bitmap.x = bitmap.x + bitmapData.width + leftPadding;
bitmap.y = bitmap.y + bitmapData.height + topPadding;
break;
case ("bottom"):
bitmap.rotation = 0;
bitmap.x = bitmap.x + leftPadding;
bitmap.y = bitmap.y + topPadding;
break;
}
addChild(bitmap);
if (textField.visible)
textField.visible = false;
}

override public function setStyle(styleProp:String, newValue:*):void
{
super.setStyle(styleProp, newValue);
if (styleProp == "styleName" || styleProp == "left" || styleProp == "right" ||
styleProp == "top" || styleProp == "bottom" || styleProp == "skin" ||
styleProp == "color" || styleProp == "textRollOverColor" ||
styleProp == "textSelectedColor")
{
invalidateSize();
invalidateDisplayList();
}
}

private function changeSkins():void
{
var n:int = skins.length;
for (var i:int = 0; i < n; i++)
removeChild(skins[i]);
skins = [];
viewSkin();
}

private function viewSkin():void
{
var stateName:String = "";
var skin:IFlexDisplayObject = null;
if (!enabled)
stateName = (selected ? "selectedDisabled" : "disabled");
else if (phase == "up")
stateName = (selected ? "selectedUp" : "up");
else if (phase == "over")
stateName = (selected ? "selectedOver" : "over");
else if (phase == "down")
stateName = (selected ? "selectedDown" : "down");
if (enabled && rebound)
{
if (phase == "up")
stateName = "up";
if (phase == "over")
stateName = "selectedOver";
if (phase == "down")
stateName = "selectedDown";
}
var skinClass:Class = Class(getStyle("skin"));
if (skinClass)
{
skin = (new skinClass() as IFlexDisplayObject);
var styleableSkin:ISimpleStyleClient = (skin as ISimpleStyleClient);
if (styleableSkin)
styleableSkin.styleName = this;
skin.name = stateName + "Skin";
addChild(DisplayObject(skin));
skin.setActualSize(unscaledWidth, unscaledHeight);
if (skin is IInvalidating && initialized)
IInvalidating(skin).validateNow();
else if (skin is IProgrammaticSkin && initialized)
IProgrammaticSkin(skin).validateDisplayList();
skins.push(skin);
}
if (currentSkin)
currentSkin.visible = false;
currentSkin = skin;
if (currentSkin)
currentSkin.visible = true;
var labelColor:Number = 0;
if (enabled)
{
if (stateName == "over")
labelColor = textField.getStyle("textRollOverColor");
else if (phase == "down")
labelColor = textField.getStyle("textSelectedColor");
else
labelColor = textField.getStyle("color");
}
else
{
labelColor = textField.getStyle("disabledColor");
}
textField.setColor(labelColor);
}

private function enableSelectTimer(enable:Boolean = true):void
{
if (!enable)
{
if (selectTimer)
selectTimer.stop();
return;
}
if (!selectTimer)
{
selectTimer = new Timer(AUTO_SELECT_TIMEOUT, 1);
selectTimer.addEventListener(TimerEvent.TIMER_COMPLETE,
selectTimerCompleteHandler);
}
selectTimer.stop();
selectTimer.reset();
selectTimer.start();
}

private function enableUnselectTimer(enable:Boolean = true):void
{
if (!enable)
{
if (unselectTimer)
unselectTimer.stop();
return;
}
if (!unselectTimer)
{
unselectTimer = new Timer(AUTO_SELECT_TIMEOUT, 1);
unselectTimer.addEventListener(TimerEvent.TIMER_COMPLETE,
unselectTimerCompleteHandler);
}
unselectTimer.stop();
unselectTimer.reset();
unselectTimer.start();
}

protected function rollOverHandler(event:MouseEvent):void
{
rollOverFlag = true;
enableUnselectTimer(false);
if (phase == "up")
{
if (event.buttonDown)
return;
if (rebound && !selected)
{
selected = true;
enableSelectTimer();
}
phase = "over";
invalidateDisplayList();
event.updateAfterEvent();
}
else if (phase == "over")
{
phase = "down";
invalidateDisplayList();
event.updateAfterEvent();
}
}

protected function rollOutHandler(event:MouseEvent):void
{
rollOverFlag = false;
enableSelectTimer(false);
if (phase == "over")
{
if (rebound && selected)
{
selected = false;
enableUnselectTimer();
}
phase = "up";
invalidateDisplayList();
event.updateAfterEvent();
}
else if (phase == "down")
{
phase = "over";
invalidateDisplayList();
event.updateAfterEvent();
}
}

protected function mouseDownHandler(event:MouseEvent):void
{
if (!enabled || rebound)
return;
systemManager.getSandboxRoot().addEventListener(
MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true);
systemManager.getSandboxRoot().addEventListener(
SandboxMouseEvent.MOUSE_UP_SOMEWHERE, stage_mouseLeaveHandler);
phase = "down";
dispatchEvent(new FlexEvent(FlexEvent.BUTTON_DOWN));
invalidateDisplayList();
event.updateAfterEvent();
}

protected function mouseUpHandler(event:MouseEvent):void
{
if (!enabled || rebound)
return;
phase = "over";
systemManager.getSandboxRoot().removeEventListener(
MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true);
systemManager.getSandboxRoot().removeEventListener(
SandboxMouseEvent.MOUSE_UP_SOMEWHERE, stage_mouseLeaveHandler);
invalidateDisplayList();
event.updateAfterEvent();
}

protected function clickHandler(event:MouseEvent):void
{
if (!enabled || rebound)
{
event.stopImmediatePropagation();
return;
}
if (!selected)
selected = true;
event.updateAfterEvent();
}

private function systemManager_mouseUpHandler(event:MouseEvent):void
{
if (contains(event.target as DisplayObject))
return;
phase = "up";
systemManager.getSandboxRoot().removeEventListener(
MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true);
systemManager.getSandboxRoot().removeEventListener(
SandboxMouseEvent.MOUSE_UP_SOMEWHERE, stage_mouseLeaveHandler);
invalidateDisplayList();
event.updateAfterEvent();
}

private function stage_mouseLeaveHandler(event:Event):void
{
phase = "up";
systemManager.getSandboxRoot().removeEventListener(
MouseEvent.MOUSE_UP, systemManager_mouseUpHandler, true);
systemManager.getSandboxRoot().removeEventListener(
SandboxMouseEvent.MOUSE_UP_SOMEWHERE, stage_mouseLeaveHandler);
}



...... (省略389223字)
ThornBird313 2009-12-02
  • 打赏
  • 举报
回复
嵌入字体并设置rotation属性,如果不想嵌入字体的话,可以自己画。

可以看这个例子(updateDisplayList方法):


package com.ccac.ibs.controls.dockBarClasses
{

import com.ccac.ibs.controls.IBSDockBar;

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.display.PixelSnapping;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.geom.Matrix;
import flash.text.TextFieldAutoSize;
import flash.text.TextFieldType;
import flash.utils.Timer;

import mx.core.EdgeMetrics;
import mx.core.IFlexDisplayObject;
import mx.core.IInvalidating;
import mx.core.IProgrammaticSkin;
import mx.core.IUITextField;
import mx.core.UIComponent;
import mx.core.UITextField;
import mx.events.DynamicEvent;
import mx.events.FlexEvent;
import mx.events.SandboxMouseEvent;
import mx.styles.ISimpleStyleClient;

[Style(name="color", type="uint", format="Color", inherit="yes")]
[Style(name="disabledColor", type="uint", format="Color", inherit="yes")]
[Style(name="fontAntiAliasType", type="String", enumeration="normal,advanced", inherit="yes")]
[Style(name="fontFamily", type="String", inherit="yes")]
[Style(name="fontGridFitType", type="String", enumeration="none,pixel,subpixel", inherit="yes")]
[Style(name="fontSharpness", type="Number", inherit="yes")]
[Style(name="fontSize", type="Number", format="Length", inherit="yes")]
[Style(name="fontStyle", type="String", enumeration="normal,italic", inherit="yes")]
[Style(name="fontThickness", type="Number", inherit="yes")]
[Style(name="fontWeight", type="String", enumeration="normal,bold", inherit="yes")]
[Style(name="kerning", type="Boolean", inherit="yes")]
[Style(name="letterSpacing", type="Number", inherit="yes")]
[Style(name="textAlign", type="String", enumeration="left,center,right", inherit="yes")]
[Style(name="textDecoration", type="String", enumeration="none,underline", inherit="yes")]
[Style(name="textIndent", type="Number", format="Length", inherit="yes")]
[Style(name="skin", type="Class", inherit="no",
states="up, over, down, disabled, selectedUp, selectedOver, selectedDown, selectedDisabled")]
[Style(name="textRollOverColor", type="uint", format="Color", inherit="yes")]
[Style(name="textSelectedColor", type="uint", format="Color", inherit="yes")]

[Event(name="valueCommit", type="mx.events.FlexEvent")]
[Event(name="autoSelect", type="mx.events.DynamicEvent")]

public class IBSDockTab extends UIComponent
{

public static const AUTO_SELECT:String = "autoSelect";

public static const AUTO_SELECT_TIMEOUT:int = 400;

public function IBSDockTab()
{
super();
addEventListener(MouseEvent.ROLL_OVER, rollOverHandler);
addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
addEventListener(MouseEvent.CLICK, clickHandler);
}

private var textField:IUITextField = null;

private var currentSkin:IFlexDisplayObject = null;

private var skins:Array = [];

private var phase:String = "up";

private var bitmap:Bitmap = null;
private var bitmapData:BitmapData = null;

private var selectTimer:Timer = null;
private var unselectTimer:Timer = null;
private var rollOverFlag:Boolean = false;

private var _label:String = "";
private var labelChanged:Boolean = false;

[Bindable("labelChanged")]
[Inspectable(category="General", defaultValue="")]
public function get label():String
{
return _label;
}

public function set label(value:String):void
{
_label = value;
labelChanged = true;
invalidateSize();
invalidateDisplayList();
dispatchEvent(new Event("labelChanged"));
}

private var _rebound:Boolean = false;
private var reboundChanged:Boolean = false;

[Bindable("reboundChanged")]
[Inspectable(category="General", defaultValue="false")]
public function get rebound():Boolean
{
return _rebound;
}

public function set rebound(value:Boolean):void
{
_rebound = value;
reboundChanged = true;
invalidateProperties();
invalidateDisplayList();
dispatchEvent(new Event("reboundChanged"));
}

private var _selected:Boolean = false;

[Bindable("click")]
[Bindable("valueCommit")]
[Inspectable(category="General", defaultValue="false")]
public function get selected():Boolean
{
return _selected;
}

public function set selected(value:Boolean):void
{
_selected = value;
invalidateDisplayList();
dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT, true));
}

private var _position:String = "left";

[Bindable("positionChanged")]
[Inspectable(category="General", defaultValue="left")]
public function get position():String
{
return _position;
}

public function set position(value:String):void
{
if (value == "left" || value == "right" || value == "top" || value == "bottom")
{
_position = value;
invalidateSize();
invalidateDisplayList();
dispatchEvent(new Event("positionChanged"));
}
}

public function get padding():EdgeMetrics
{
var left:Number = 0;
var right:Number = 0;
var top:Number = 0;
var bottom:Number = 0;
var _left:Number = getStyle("left");
var _right:Number = getStyle("right");
var _top:Number = getStyle("top");
var _bottom:Number = getStyle("bottom");
switch (_position)
{
case ("left"):
top = _left;
bottom = _right;
right = _top;
left = _bottom;
break;
case ("right"):
bottom = _left;
top = _right;
left = _top;
right = _bottom;
break;
case ("top"):
right = _left;
left = _right;
bottom = _top;
top = _bottom;
break;
case ("bottom"):
left = _left;
right = _right;
top = _top;
bottom = _bottom;
break;
}
left = isNaN(left) ? 0 : left;
right = isNaN(right) ? 0 : right;
top = isNaN(top) ? 0 : top;
bottom = isNaN(bottom) ? 0 : bottom;
return new EdgeMetrics(left, top, right, bottom);
}

override public function get focusEnabled():Boolean
{
return false;
}

override protected function createChildren():void
{
super.createChildren();
if (!textField)
{
textField = IUITextField(createInFontContext(UITextField));
textField.type = TextFieldType.DYNAMIC;
textField.background = false;
textField.border = false;
textField.autoSize = TextFieldAutoSize.LEFT;
textField.visible = false;
textField.styleName = this;
addChild(textField as DisplayObject);
}
}

override protected function commitProperties():void
{
super.commitProperties();
if (reboundChanged)
{
if (rebound)
selected = false;
reboundChanged = false;
}
}



panhaisheng 2009-12-02
  • 打赏
  • 举报
回复
把lable的wordWrap属性设为True,然后调整其长、宽
herowach 2009-03-06
  • 打赏
  • 举报
回复
一般旋转应该都是用rotation属性,但我不知道为什么Text旋转后里面的文字就消失了,我试了下Canvas是可以的,后来把label.transform.matrix旋转也是一样看不见文字,原因我在慢慢找找,要实现你那种效果也有土办法....
方法一:
<mx:Text text="test1234567" fontSize="12" width="12" selectable="false"/>
这样基本与Label一样的效果;
方法二:
自己加上转换代码
<mx:Label id="lb" text="test1234567" fontSize="12" width="15" height="100%" initialize="rotationText(event)"/>
AS:
private function rotationText(event:FlexEvent):void
{
var text:String = event.currentTarget.text;
var length:int = text.length;
var newText:String = "";
for(var i:int = 0; i < length; i++)
{
newText+=text.charAt(i)+"\r";
}
lb.text = newText;
}
加载更多回复(4)

4,327

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧