2016-12-11 4 views
0

ダイナミックテキストボックスの異なる行をAS3のムービークリップに変換する方法は私のプロジェクトに関する質問がありますか?ダイナミックテキストボックスの別の行をAS3のムービークリップに変換する方法

実際、私はtest.txtという名前のテキストファイルを持っています。例えば:

それはで構成されています

今日は日曜です。今日は です。今日は です。今日は です。今日は です。今日は です。今日は です。

これらのすべてを配列に入れてから、文字列をtext_txtという動的テキストボックスに表示したいとします。

私のライブラリにはさまざまなオブジェクトがあります。最初の行に "sun"がある場合、最初のオブジェクト(obj01)はmcというムービークリップの内側にある特定の領域に表示されます。

質問はここにある:

拳:私は私の最初の行に異なるテキストを持っている場合。例えば、 "今日は太陽です;"どのように "太陽"がこの行にあるのを見つけるか???

2番目:ダイナミックテキストボックスの別の行をムービークリップに変換する方法。だから、ユーザーが "obj01"をクリックすると、動的テキストボックスの最初の行が大きくなります???

お時間をいただきありがとうございます。

import flash.events.MouseEvent; 

var flag:int = 0; 


//load the txt file 
var myTextLoader:URLLoader = new URLLoader(); 
myTextLoader.addEventListener(Event.COMPLETE, onLoaded); 
myTextLoader.load(new URLRequest("test.txt")); 

//when the scene loads, all the info from txt file shown into the dynamic text; 
function onLoaded(e:Event):void 
{ 
//put all the info into array 
var days:Array = e.target.data.split(/\n/); 

var str:String; 
//show them in the dynamic text 
for (var i=0; i<days.length; i++) 
{ 
    str = days[i]; 
    text_txt.appendText(str + "\n"); 

    //if one text founded, do somethind and shoe an objectinthe output; 
    switch (str) 
    { 
     case "sun;\r" : 
      var obj01:Show = new Show(); 
      mc.addChild(obj01); 
      obj01.x = -200; 
      obj01.y = -15; 
      break; 

     default : 
      trace("None of the above were met"); 
    } 
} 

obj01.buttonMode = true; 


//if the object clicked then something must be happend to the first line in the dynamic text box 
obj01.addEventListener(MouseEvent.CLICK, firstLine); 
function firstLine(e:MouseEvent):void 
{ 
    flag = 1; 

    switch (flag) 
    { 
     case 1 : 
      trace("Clicked!"); 
      //the first line in the text box should get a different background and become more bigger 
      //Do I need to convert the first line to a movieclip? OR I need to do in another way?! 
      break; 

     default : 
      trace("None"); 
    } 
    } 
} 
+0

可能な重複[ムービークリップAS3のように動作し、文字列、および/または配列のフィールドを変換する方法](http://stackoverflow.com/questions/41087467/how-to-convert-string-and-or-array-fields-to-act-like-a-movie-clip-as3) – Brian

答えて

0

や機能の多くを試してみてください、私はこの質問の後半部分のための答えを見つけることがあります。 私はそれを行う方法がなければならないと確信していたので、それを私の好きな質問として作ったのです。

// 
var newMcTitle:Array = []; 

//put all the info into array 
var days:Array = e.target.data.split(/\n/); 

for (var i=0; i<days.length; i++) 
{ 
    str = days[i]; 

    //put the texts line by line into a textfield and put the textfield into a movie clip 
    var newMc:MovieClip = new MovieClip(); 
    var newText:TextField = new TextField(); 
    newText.text = days[i]; 
    newMc.addChild(newText); 
    newMc.x = 30; 
    newMc.y = positionY; 
    newMc.scaleX = 2; 
    newMc.scaleY = 2; 
    addChild(newMc); 
    positionY += 30; 

    //unique instance names: 
    newMc.name = days[i];// or more generally when no arrays used 
    newMc.name = 'mc_' + i; 
    //trace(newMc.name); 

    //asssign unique property to be used to identify newMc 
    newMc.ivar = i; 

    //populate an array instantiated outside for-loop (eg, var newMcA:Array=[];) 
    newMcTitle.push(newMc); 
} 

そして今、あなたは使用することができます。

//if the object clicked then something must be happend to the first line in the dynamic text box 
obj01.addEventListener(MouseEvent.CLICK, firstLine); 
function firstLine(e:MouseEvent):void 
{ 
    flag01 += 1; 

    switch (flag01) 
    { 
     case 1 : 
      //the first line in the text box should get a different background and become more bigger 
      newMcTitle[0].scaleX *= 1.2; 
      newMcTitle[0].scaleY *= 1.2; 
      break; 

     default : 
      trace("None"); 
    } 
} 
0

まず:私は私の最初の行に異なるテキストを持っている場合。たとえば "今日 は太陽です;"どのように "太陽"がこの行にあるのを見つけるか???その線を有するダイナミックテキスト値の

分割アレイ全体 への鍵(「太陽」)が含まれている場合、各配列項目をチェック。作品 クリップにダイナミックテキストボックスの異なるラインを変換する方法: あなたはそれArray[x].indexOf(key) >= 0

セカンドのようないくつかのことを使用する必要があります。だから、ユーザが "mc.obj01"をクリックすると、 動的テキストボックスの最初の行が大きくなります???

ここでは、ムービークリップとテキスト表示のサイズの違いの原因を見つける例を示します。この画像はAdobe Flashからのものです。その値が "brown fox jumps"のテキストフィールドは、緑の長方形と同じサイズです。赤い矩形で表示されるテキストサイズです。グリーン

  • textField.textWidth & textField.textHeight

ので、あなたが二値へのあなたのムービークリップ/テキストフィールドのサイズを変更しなければならないと同じtextField.width & textField.height

  • レッドされているテキストのサイズと同じテキストフィールドのサイズ、です(赤);
    私の答えはウォークスルーではなくガイダンスです。あまりにも多くの研究の後

    enter image description here

  • 関連する問題