• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Help with a dynamic text

Explorer ,
Jan 03, 2014 Jan 03, 2014

Copy link to clipboard

Copied

Hey guys...

I have a little issue with 2 texts I am trying to have in my stage, having them resized depending on where the whole thing gets opened... one of them has always the same text and the other one changes all the time...

The problem I have is:

The first one: if it takes the width of the screen to resize it fits good, but in a small device it is too small to be read.  If it takes the height of the screen, it doesnt fit ok on the width and you lose some of the words.

The second one: it starts with the right size and position... (when it is a 2 digits text) but after it gets 3 or more digits, if you re add the text in the screen it resizes and has the digits way smaler than before.

Here is the code:

public class PruebaMP extends Sprite

{

     private var bg1:Loader;

     private var nivel1pic:Loader;

     private var nivel4pic:Loader;

     private var play1:Loader;

    

     private var fmat31:TextFormat;

     private var fmat3:TextFormat;

     private var count:int;

     private var level:int;

     private var lvlup:int;

     private var updlvl:int;

     private var instructivo:TextField;

     private var score_text:TextField;

     private var score_txt:TextField;

     private var instructivo_holder:Sprite;

     private var score_txt_holder:Sprite;

     private var score_text_holder:Sprite;

     public function PruebaMP()

     {

          this.stage.scaleMode = StageScaleMode.NO_SCALE;

          this.stage.align = StageAlign.TOP_LEFT;

          Multitouch.inputMode = MultitouchInputMode.GESTURE;

          stage.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe);

          startGame();

     }

     private function startGame():void {

          page1();

     }

     private function page1():void {

     bg1= new Loader();

     bg1.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

     bg1.load(new URLRequest("back1.jpg"));

 

     nivel1pic = new Loader();

     nivel1pic.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

     nivel1pic.load(new URLRequest("nivel1.jpg"));

 

     nivel4pic = new Loader();

     nivel4pic.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

     nivel4pic.load(new URLRequest("nivel3.jpg"));

     play1 = new Loader();

     play1.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

     play1.load(new URLRequest("play.png"));

     play1.addEventListener(MouseEvent.CLICK, playGame);

     fmat3 = new TextFormat();

     fmat3.font = "CooperBlack";

     fmat3.size = 20;

     fmat3.color = "0x00FFFF";

     fmat3.align = "center";

     fmat3.bold = true;

     fmat31 = new TextFormat();

     fmat31.font = "CooperBlack";

     fmat31.size = 30;

     fmat31.color = "0x000000";

     fmat31.align = "center";

     fmat31.bold = true;

     instructivo = new TextField();

     instructivo.border = true;

     instructivo.defaultTextFormat = fmat3;

     instructivo.autoSize = TextFieldAutoSize.CENTER;

     score_text = new TextField();

     score_text.defaultTextFormat = fmat31;

     score_text.autoSize = TextFieldAutoSize.LEFT;

     score_txt = new TextField();

     score_txt.defaultTextFormat = fmat31;

     score_txt.autoSize = TextFieldAutoSize.LEFT;

     instructivo_holder = new Sprite();

     score_text_holder = new Sprite();

     score_txt_holder = new Sprite();

     addInst();

     }

     private function onComplete(e:Event):void {

          bg1.width = stage.stageWidth;

                                     bg1.height = stage.stageHeight;

                                     bg1.x = 0;

                                     bg1.y = 0;

 

                                     nivel1pic.width = stage.stageWidth;

                                     nivel1pic.height = stage.stageHeight;

                                     nivel1pic.x = 0;

                                     nivel1pic.y = 0;

 

                                     nivel4pic.width = stage.stageWidth;

                                     nivel4pic.height = stage.stageHeight;

                                     nivel4pic.x = 0;

                                     nivel4pic.y = 0;

          play1.width = (stage.stageWidth * 0.25);

          play1.height = (stage.stageHeight * 0.12);

                                      play1.x = (stage.stageWidth * 0.34);

                                      play1.y = (stage.stageHeight * 0.71);

     }

     private function addInst():void {

          addChild(bg1);

          instructivo_holder.addChild(instructivo);

          addChild(play1);

          instructivo.text="You are in the Far, Far West; where the one surviving was always the faster gunman... \n Press on the enemies to shoot at them,           not allowing them to shoot at you. Be careful, they are going to be faster every time you level up. \n \n Get excited with this amazing 20 levels game           where each enemy killed gives you 10 points and each level they get faster. \n You have a three loads of dynamite and 5 lives to do so. \n DO YOU           HAVE WHAT IS NEEDED TO FREE THE TOWN?";

          stage.addChild(instructivo_holder);

                                     instructivo_holder.width = (stage.stageWidth * 0.90);

                                     //instructivo_holder.height = (stage.stageHeight * 0.70);

                                     instructivo_holder.scaleY = instructivo_holder.scaleX;

                                      instructivo_holder.x = (stage.stageWidth / 2.2);

                                      instructivo_holder.y = (stage.stageHeight * 0.01);

     }

     private function playGame():void {

          if (!level){level = 1;}

                                      lvlup = 200;

                                      updlvl = (lvlup * level);

                                      if (!count){count = 0;}

          UpdateFields();

          if (level == 1) level1();

                                      if (level == 4) level4();

          //here I have the other functions that add the score and make the game works... then I have:

      }

     private function level1():void {

          addChild(nivel1pic);

          addingTexts();

     }

     private function level4():void {

          removerViejoNivel();

          addChild(nivel4pic);

          addingTexts();

      }

     private function removerViejoNivel():void {

          if (score_text.parent) {score_text.parent.removeChild(score_text);}

                                      if (score_text_holder.parent) {score_text_holder.parent.removeChild(score_text_holder);}

          if (nivel1pic.parent) {nivel1pic.parent.removeChild(nivel1pic);}

     }

     private function UpdateFields():void {

          score_txt.text = String(count);

     }

         //it also has some other functions and when the score is 200, the level changes to 2, at 400 it changes to 3, at 600 it changes to 4, etc

     private function addingTexts():void {

          score_text_holder.addChild(score_text);

                                      score_txt_holder.addChild(score_txt);

         

          score_text.text="Score";

          score_txt.text = String(count);

         

          stage.addChild(score_text_holder);

                                     stage.addChild(score_txt_holder);

          score_text_holder.width = (stage.stageWidth * 0.08);

                                      score_text_holder.scaleY = score_text_holder.scaleX;

                                      score_text_holder.x = (stage.stageWidth / 4.5);

                                      score_text_holder.y = (stage.stageHeight * 0.04);

 

                                     score_txt_holder.width = (stage.stageWidth * 0.017);

                                      score_txt_holder.scaleY = score_txt_holder.scaleX;

                                      score_txt_holder.x = (stage.stageWidth / 3.2);

                                      score_txt_holder.y = (stage.stageHeight * 0.04);

     }

}

How can I make them work properly?

Thanks and happy new year to all of you!

TOPICS
ActionScript

Views

1.0K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 03, 2014 Jan 03, 2014

Copy link to clipboard

Copied

what size do you want each textfield?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jan 03, 2014 Jan 03, 2014

Copy link to clipboard

Copied

they suppose to resize automatically depending on the device... the instructions should be 80% of the stage width and like 65% of the stage height and the score has to be around 7,73% of the stage width and 12.62% of the stage height. The problem is that when the score holder has to hold more than 2 digits, it keeps it size, making the size of the font smaller

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jan 03, 2014 Jan 03, 2014

Copy link to clipboard

Copied

looks like you are calling the same onComplete four times for four different loading events. Depending on what gets loaded first, it might be resetting your sizes three more times.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 03, 2014 Jan 03, 2014

Copy link to clipboard

Copied

this:

score_text_holder.width = (stage.stageWidth * 0.08);

is setting the width to 8%, not 80%

and this:

score_txt_holder.width = (stage.stageWidth * 0.017);

is setting the wdith to 1.7%

and instructivo is being set to 90% of the stage.stageWidth.

i'm not sure how that's related to anything in your message 2.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jan 06, 2014 Jan 06, 2014

Copy link to clipboard

Copied

I think I have a way to fix the issue with the score text:

Declaring a boolean as false and making it true on the level4 function; and, if that boolean is true, the text holder is going to be a little bit bigger...

However, about the instruction text, I don´t know how to make it bigger, for it to be readable, since, if it is in a small device, no one will be able to read the instructions.

Any help with that one?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 06, 2014 Jan 06, 2014

Copy link to clipboard

Copied

what size do you want that textfield to be relative to the stage?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jan 06, 2014 Jan 06, 2014

Copy link to clipboard

Copied

like 80 / 85 % width and like 65 % height

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jan 08, 2014 Jan 08, 2014

Copy link to clipboard

Copied

My issue is that if I have only the width it works fine, but in a small screen it will be very hard to read... however, if I set the height, it has the size of the letter bigger and takes the height as expected, but it doesnt respect the width anymore:

stage.addChild(instructivo_holder);

                              instructivo_holder.width = (stage.stageWidth * 0.80);

                              //instructivo_holder.height = (stage.stageHeight * 0.65);

                              instructivo_holder.scaleY = instructivo_holder.scaleX;

                              instructivo_holder.x = (stage.stageWidth / 2.2);

                              instructivo_holder.y = (stage.stageHeight * 0.01);

So, how can I make them both work? (width and height)

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jan 08, 2014 Jan 08, 2014

Copy link to clipboard

Copied

LATEST

Another update: it seems it takes only one of the conditions, meaning I couldnt have them work together:

It takes the width... then it takes the height, avoiding the width  (if I put them the other way around, it takes the height first, then the width avoiding the height)

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines