Всем привет.
Столкнулся с такой вот дилемой, чёт не работает StageText под Андроидом, в айосе все норм, а вот в Андроиде, выводит только несколько символов латиницы и всё, цифры и т.д. как будто не импортированны.
Где чё подкопать, шрифт вродь за импортил правильно да и пытался санс вставить, всеравно не але.
21 ейр
Код AS3:
package engine.text {
import flash.display.DisplayObjectContainer;
import flash.events.Event;
import flash.events.Event;
import flash.events.FocusEvent;
import flash.events.KeyboardEvent;
import flash.events.SoftKeyboardEvent;
import flash.events.TextEvent;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.text.Font;
import flash.text.ReturnKeyLabel;
import flash.text.SoftKeyboardType;
import flash.text.StageText;
import flash.text.StageTextInitOptions;
import flash.text.TextField;
import flash.text.TextFormat;
public class SoftboardTextfield extends TextField {
public static const RETURN_KEY_LABEL_GO:String = ReturnKeyLabel.GO;
public static const RETURN_KEY_LABEL_NEXT:String = ReturnKeyLabel.NEXT;
public static const RETURN_KEY_LABEL_DONE:String = ReturnKeyLabel.DONE;
public static const RETURN_KEY_LABEL_SEARCH:String = ReturnKeyLabel.SEARCH;
public static const RETURN_KEY_LABEL_DEFAULT:String = ReturnKeyLabel.DEFAULT;
public static const SOFT_KEYBOARD_TYPE_URL:String = SoftKeyboardType.URL;
public static const SOFT_KEYBOARD_TYPE_EMAIL:String = SoftKeyboardType.EMAIL;
public static const SOFT_KEYBOARD_TYPE_NUMBER:String = SoftKeyboardType.NUMBER;
public static const SOFT_KEYBOARD_TYPE_DEFAULT:String = SoftKeyboardType.DEFAULT;
public static const SOFT_KEYBOARD_TYPE_CONTACT:String = SoftKeyboardType.CONTACT;
public static const SOFT_KEYBOARD_TYPE_PUNCTUATION:String = SoftKeyboardType.PUNCTUATION;
private var _donor:TextField;
private var _viewport:DisplayObjectContainer;
private var _stageText:StageText;
public function SoftboardTextfield(
donor:TextField,
softKeyboardType:String = SoftboardTextfield.SOFT_KEYBOARD_TYPE_DEFAULT,
returnKeyLabel:String = SoftboardTextfield.RETURN_KEY_LABEL_DEFAULT,
multiline:Boolean = true
)
{
super();
_donor = donor;
var format:TextFormat = donor.getTextFormat();
var initOptions:StageTextInitOptions = new StageTextInitOptions((_donor.numLines> 1 && multiline));
_stageText = new StageText(initOptions);
_prompt = _donor.text;
_donor.text = '';
_stageText.color = donor.textColor;
_stageText.fontSize = format.size as uint;
_stageText.fontFamily = format.font;
_stageText.restrict = donor.restrict;
_stageText.maxChars = donor.maxChars;
_stageText.autoCorrect = true;
_stageText.displayAsPassword = donor.displayAsPassword;
_stageText.returnKeyLabel = returnKeyLabel;
_stageText.softKeyboardType = softKeyboardType;
_stageText.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE, keyboardHandler);
_stageText.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATING, keyboardHandler);
_stageText.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, keyboardHandler);
if (_donor.stage) {
onAddedToStage();
} else {
_donor.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
}
private var _autoClose:Boolean = false;
public function enableEnterToClosing():SoftboardTextfield {
_autoClose = true;
if (_stageText.hasEventListener(TextEvent.TEXT_INPUT)==false) {
_stageText.addEventListener(TextEvent.TEXT_INPUT, inputHandler);
}
return this;
}
override public function setTextFormat(format:flash.text.TextFormat,beginIndex:int = -1,endIndex:int = -1):void{
_stageText.fontSize = format.size as uint;
_stageText.fontFamily = format.font;
}
override public function set defaultTextFormat(format:TextFormat):void{
setTextFormat(format);
}
private function inputHandler(event:Event):void {
var t:String = _stageText.text;
if(t.charCodeAt(t.length-1)==10) {
_stageText.text = t.substr(0, t.length-1);
Framework.stage.focus = null;
if (_afterFunc) _afterFunc();
}
}
public function setManualFocus(event:Event = null):void {
if (event) event.currentTarget.removeEventListener(event.type,setManualFocus);
_stageText.assignFocus();
}
private var _prompt:String = '';
private var _afterFunc:Function;
private function keyboardHandler(event:SoftKeyboardEvent):void {
switch (event.type) {
case SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE:
if (_stageText.text==_prompt) _stageText.text = '';
break;
case SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATING:
break;
case SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE:
if (_stageText.text=='') _stageText.text = _prompt;
break;
}
}
private function onAddedToStage(event:Event=null):void {
if (_donor.hasEventListener(Event.REMOVED_FROM_STAGE)==false) {
_donor.addEventListener(Event.REMOVED_FROM_STAGE, onRemoveStage);
}
if (_stageText.text=='') _stageText.text = _prompt;
_viewport = _donor.parent;
var searchPosition:Point = _viewport.localToGlobal(new Point(_donor.x,_donor.y));
_stageText.viewPort = new Rectangle(searchPosition.x, searchPosition.y, searchPosition.x+_donor.width-20,_donor.height);
_stageText.visible = true;
_stageText.stage = _viewport.stage;
}
private function onRemoveStage(event:Event):void {
_stageText.visible = false;
if (_donor.hasEventListener(Event.ADDED_TO_STAGE)==false) {
_donor.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
}
override public function setSelection(startIndex:int, endIndex:int):void {
_stageText.selectRange(startIndex,endIndex);
}
override public function set text(txt:String):void {
_stageText.text = txt;
}
override public function get text():String {
return _stageText.text;
}
override public function set visible(status:Boolean):void{
_stageText.visible = status;
}
override public function get visible():Boolean{
return _stageText.visible;
}
public function afterCloseFunction(func:Function):void {
_afterFunc = func;
}
public function destroy():void {
_donor.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
_donor.removeEventListener(Event.REMOVED_FROM_STAGE, onRemoveStage);
_stageText.removeEventListener(TextEvent.TEXT_INPUT, inputHandler);
_stageText.removeEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE, keyboardHandler);
_stageText.removeEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATING, keyboardHandler);
_stageText.removeEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, keyboardHandler);
_stageText.stage = null;
_stageText = null;
_viewport = null;
_donor = null;
}
}
}