トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     TLFについてテキスト入力時のエラー
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Åê¹ÆNo.46654
投稿日時: 2010-12-28 19:27
半人前
居住地: 主に福岡へ出没
投稿: 45
使用環境:
【Win7:FlashCS5:AS3.0】
エディター:FlashDevelop
TLFについてテキスト入力時のエラー
エラーの原因が特定できないので知恵をお貸しください。

【やりたいこと】
文字を入力しようとするたび、前回入力していた文字を消す。

【起こっているエラー】
一回目の入力時は問題ないが、二回目からエラーが出る。
エラーの構文は以下になります。

TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
	at flashx.textLayout.compose::TextFlowLine/makeSelectionBlocks()
	at flashx.textLayout.compose::TextFlowLine/http://ns.adobe.com/textLayout/internal/2008::computePointSelectionRectangle()
	at flashx.textLayout.compose::TextFlowLine/http://ns.adobe.com/textLayout/internal/2008::hilitePointSelection()
	at flashx.textLayout.container::ContainerController/http://ns.adobe.com/textLayout/internal/2008::addSelectionShapes()
	at flashx.textLayout.edit::SelectionManager/addSelectionShapes()
	at flashx.textLayout.edit::SelectionManager/refreshSelection()
	at flashx.textLayout.compose::StandardFlowComposer/updateToController()
	at flashx.textLayout.compose::StandardFlowComposer/updateAllControllers()
	at _fla::MainTimeline/inputStart()


以下に問題の部分のみ再現したコードを記述しています。



//読み込みクラス-----------------------------------------------------------------------
import flashx.textLayout.formats.TextLayoutFormat;
import flashx.textLayout.formats.LineBreak;
import flashx.textLayout.formats.BaselineOffset;
import flashx.textLayout.elements.Configuration;
import flashx.textLayout.elements.TextFlow;
import flashx.textLayout.elements.ParagraphElement;
import flashx.textLayout.elements.SpanElement;
import flashx.textLayout.container.ContainerController;
//編集可能にする
import flashx.textLayout.edit.EditManager;
import flashx.undo.UndoManager;
//縦横設定用
import flashx.textLayout.formats.BlockProgression;

//フォーマット設定-----------------------------------------------------------------------
var textLayoutFormat:TextLayoutFormat=new TextLayoutFormat();
textLayoutFormat.color=0x000000;
textLayoutFormat.fontSize=12;
//表示文字
textLayoutFormat.fontFamily="MS ゴシック,Osaka"
//コンテナを超える場合の折り返し設定
textLayoutFormat.lineBreak=LineBreak.EXPLICIT;
//行送り
textLayoutFormat.lineHeight=16;

//フォーマットセット
var config:Configuration=new Configuration();
config.textFlowInitialFormat=textLayoutFormat;

//TextFlowの生成
var textFlow:TextFlow=new TextFlow(config);
//横文字
textFlow.blockProgression=BlockProgression.TB;
//文字の中心点
textFlow.alignmentBaseline=TextBaseline.IDEOGRAPHIC_CENTER
//文字の中心点を行のどの位置にあわせるか
textFlow.dominantBaseline=TextBaseline.IDEOGRAPHIC_CENTER
//行始めの位置
textFlow.firstBaselineOffset=BaselineOffset.AUTO

//コントローラの追加
var mc:Sprite=new Sprite();
var c:ContainerController=new ContainerController(mc,325,90)
textFlow.flowComposer.addController(c);
textFlow.interactionManager = new EditManager(new UndoManager())
var p:ParagraphElement=new ParagraphElement();
var span:SpanElement=new SpanElement();
span.text="ここに入力";
p.addChild(span);
textFlow.addChild(p)
mc.x=25
mc.y=20
addChild(mc)
mc.addEventListener(MouseEvent.MOUSE_DOWN,inputStart)
//描画更新
textFlow.flowComposer.updateAllControllers();

//////////////////////////////////////////////////////////////////

function inputStart(e:MouseEvent):void{
	//テキスト消去
	var numChild:uint=textFlow.numChildren-1;
	var i:uint;
	for(i=0;i<=numChild;i++){
		textFlow.removeChildAt(0)
	}
	//
	var _p:ParagraphElement=new ParagraphElement();
	var _span:SpanElement=new SpanElement();
	_span.text="";
	_p.addChild(_span);
	textFlow.addChild(_p)
	trace(textFlow.propertyIsEnumerable(),textFlow.getFirstLeaf())
	trace("描画更新手前-----------------")
	//描画更新
	textFlow.flowComposer.updateAllControllers();
	trace("描画更新後-----------------")
}


おそらく【TextFlowLine/makeSelectionBlocks()】←ここの部分が問題なのでしょうが、makeSelectionBlocks()がどうやれば取得できるかがわからず詰まっています。
ヒントや、別の考え方でも構いませんのでよろしくお願いします。
Åê¹ÆNo.46708
投稿日時: 2011-1-4 16:08
半人前
居住地: 主に福岡へ出没
投稿: 45
使用環境:
【Win7:FlashCS5:AS3.0】
エディター:FlashDevelop
Re: TLFについてテキスト入力時のエラー
自己レスです。
まだ問題解決には至っていませんが
こちら にて【TextFlowLine/makeSelectionBlocks()】の内部が確認できました。
TextFlowLineのprivate関数だったんですね…。

引き続きなにか他の情報などありましたらよろしくお願いします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops