Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Calculator 5

  • Be the first to comment

  • Be the first to like this

Calculator 5

  1. 1. Calculator Day 5 : More Variables Create It With in cooperation with 1
  2. 2. As you have seen in the last few days. We have been a heavy user of variables. We have used local variables in the card and commands. Since we only have one card, we have not had the chance to use global variables. We are almost done with our calculator, so we are going to do a quick review of how we used variables to be extra sure everyone understands. Then we are going to use variable to do a super cool effect used by the calculator. Hello World App More Variables 2
  3. 3. Calculator App The first variable we will cover is the local card script variable. Again we are using the numberPressed command, and we can see the iNewNumber is used in 2 ways 1. Read - You can use it anywhere in the card script for validation or calculations. 2. Write - Sometime you will need to set a new value to the variable Local - Card on mouseUp numberPressed the label of target end mouseUp on numberPressed pNumPress if lNewNumber = true then ---just set the Display to the number pressed put pNumPress into field "display" put false into lNewNumber --Not a new Num anymore else ---add the pressed number to the display put pNumPress after field "display" End if end numberPressed You will also see a “l” in front, this will indicate to you that it is a local card variable. 3
  4. 4. Calculator App Local - Command on equalsPressed --get out if no currentOperator, nothing to calculate if lCurrentOperator is empty then exit equalsPressed put field "display" into tCurrentValue switch lCurrentOperator case "/" put lCurrentTotal / tCurrentValue into lCurrentTotal break case "x" put lCurrentTotal * tCurrentValue into lCurrentTotal break case "-" put lCurrentTotal - tCurrentValue into lCurrentTotal break case "+" put lCurrentTotal + tCurrentValue into lCurrentTotal break end switch put lCurrentTotal into field "display" end equalsPressed Next is the local command variable. When you need to ONLY use the variable within the current command 1. Write - You will need to set a new value to the local variable so as to use it. 2. Read - Then you will be able to use the value in calculations, to control logic flow or do validations. You will also see a “t” in front, this will indicate to you that it is a temporary or local command variable. 4
  5. 5. Calculator App The next variable we cover will be passed parameter of commands. I have included the numberPressed code. 1. when the user pressed a number, that number is passed to the numberPressed command as a parameter. 2. LiveCode actually takes the parameters, and presents them to you as a local variable. Parameters on mouseUp numberPressed the label of target end mouseUp on numberPressed pNumPress if lNewNumber = true then ---just set the Display to the number pressed put pNumPress into field "display" put false into lNewNumber --Not a new Num anymore else ---add the pressed number to the display put pNumPress after field "display" End if end numberPressed 1 2 You will also see a “p” in front, this will indicate to you that it is a passed or parameter variable. 5
  6. 6. Calculator App Let see how to use local Command variables to do something super cool. The Calculator App will dynamically shrink the font size of the display to fit in as much of the number as it can. 1. With just a few numbers and lots of extra space, the font size is 62. That is our desired size. 2. But in order to allow more numbers in the display, we need to shrink the font size to a minimum of say 5. Just One more Thing! 1 2 LiveCode is a VERY simple, yet powerful language and we are going to show you how to do this... 6
  7. 7. Calculator App Let’s create a new command - textChanged. Here will we will check and change the size of the font in order to fit our number in the display. To get this we use formattedWidth, which give us what size the field should be given the font size. 1. Add 2 lines to code that will give us the formattedWidth vs width of the display. 2. Add the command to the bottom of the numberPressed command. Click Apply, run the App. After you have pressed several numbers, you will start to see the difference between the numbers. formattedWidth on textChanged answer the formattedWidth of field "display" answer the width of field "display" end textChanged on numberPressed pNumPress ... --Allow the clearing of the Current value --by setting the clear button to "C" set the label of button "clear" to "C" --Size Display to fit textChanged end numberPressed 1 2 7
  8. 8. Calculator App Start off by adding 2 local variables that will hold our Min text size and our Desired text size. 1. Notice that our variables start with values. You can change them if you wish. 2. Here is a little logic that will check if the numbers have become too large. If so, it will decrease the font size of the tDesiredTextSize by 10. Setting the Min and Desired Text Size Variables on textChanged local tMinTextSize = 5 local tDesiredTextSize = 62 ---First, we use the formattedWidth property to see if the display is too large if the formattedWidth of field "display" >= the width of field "display" then put (tDesiredTextSize - 10) into tNewTextSize set the textSize of field "display" to tNewTextSize end if end textChanged 1 2 Problem: You can’t just put in any number like 10, you need the proper calculated size. 8
  9. 9. Calculator App You can see how to utilize local variables to hold calculated values and make your code easier to read and understand. 1. Use [effective textSize] to get the MOST real size possible 2. Then put whichever is bigger tEffectiveSize or tMinTextSize into tSize 3. Then get whichever is smaller tSize or tDesiredTextSize Get the tNewText Size on textChanged local tMinTextSize = 5 local tDesiredTextSize = 62 ---First, we use the formattedWidth property to see if the display is too large if the formattedWidth of field "display" >= the width of field "display" then ---Calculate the most effective size put effective textSize of field "display" - 1 into tEffectiveSize put max(tEffectiveSize, tMinTextSize) into tSize put min(tSize, tDesiredTextSize) into tNewTextSize set the textSize of field "display" to tNewTextSize end if end textChanged 1 2 3 9
  10. 10. Calculator App Final Version 10 local tMinTextSize = 5 local tDesiredTextSize = 62 on textChanged repeat while the formattedWidth of field "display" >= the width of field "display" - (item 1 of the margins of field "display" * 2) --Calculate the most effective size put the effective textSize of field "display" - 1 into tEffectiveSize --Get the larger Min or tEffectiveSize put max(tEffectiveSize, tMinTextSize) into tSize --Get the smaller tSize or tDesiredTextSize put min(tSize, tDesiredTextSize) into tNewTextSize set the textSize of field "display" to tNewTextSize if the textSize of field "display" = tMinTextSize then exit repeat end repeat repeat while the formattedWidth of field "display"< the width of field "display" - (item 1 of the margins of field "display" * 2) --This line of code is similar in functionality except it enlarges the font size set the textSize of field "display" to min (max ((the effective textSize of field "display" + 1), tMinTextSize) ,tDesiredTextSize) if the textSize of field "display" = tDesiredTextSize then exit repeat end repeat end textChanged
  11. 11. Calculator App Compare 11 local tMinTextSize = 5 local tDesiredTextSize = 62 on textChanged repeat while the formattedWidth of field "display" >= the width of field "display" - (item 1 of the margins of field "display" * 2) --Calculate the most effective size put the effective textSize of field "display" - 1 into tEffectiveSize --Get the larger Min or tEffectiveSize put max(tEffectiveSize, tMinTextSize) into tSize --Get the smaller tSize or tDesiredTextSize put min(tSize, sDesiredTextSize) into tNewTextSize set the textSize of field "display" to tNewTextSize if the textSize of field "display" = tMinTextSize then exit repeat end repeat repeat while the formattedWidth of field "display"< the width of field "display" - (item 1 of the margins of field "display" * 2) --This line of code is similar in functionality except it enlarges the font size set the textSize of field "display" to min (max ((the effective textSize of field "display" + 1), sMinTextSize),tDesiredTextSize) if the textSize of field "display" = tDesiredTextSize then exit repeat end repeat end textChanged
  12. 12. If you wish to learn more… Visit LiveCode Congrats on completing: More Variables Don’t forget to save your LiveCode Project! Calculator App 12

    Be the first to comment

    Login to see the comments

Views

Total views

574

On Slideshare

0

From embeds

0

Number of embeds

7

Actions

Downloads

20

Shares

0

Comments

0

Likes

0

×