Can you post your code? I suspect there’s something else going on…for instance if you set scale twice in the same frame, you will only see the result of the second setting.
-- "main.lua" TextScaleDir = 1 local composer = require( "composer" ) composer.gotoScene( "sceneAnimatedTextTest" )
-- "sceneAnimatedTextTest.lua" local composer = require( "composer" ) local scene = composer.newScene() local displayText local displayTextScale local textXscale = 1 -- ------------------------------------------------------------------------------------------------------------- function scene:create( event ) local sceneGroup = self.view TextScaleDir = 1 local myRectangle = display.newRect( display.contentCenterX, display.contentCenterY, display.contentWidth, display.contentHeight ) myRectangle.strokeWidth = 5 myRectangle:setFillColor( 0.5 ) myRectangle:setStrokeColor( 0, 1, 0 ) sceneGroup:insert( myRectangle ) displayText = display.newText( "Hello World", display.contentCenterX, display.contentCenterY, "Font01.ttf", 20 ) displayText:setFillColor( 0, 1, 0 ) sceneGroup:insert( displayText ) displayTextScale = display.newText( "", display.contentCenterX, 50, "Font01.ttf", 30 ) displayTextScale:setFillColor( 0, 0, 0 ) sceneGroup:insert( displayTextScale ) end -- ------------------------------------------------------------------------------------------------------------- function scene:show( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then elseif ( phase == "did" ) then local function onEveryFrame( event ) textXscale = displayText.xScale if TextScaleDir == 1 then if textXscale \< 5 then displayText:scale( 1.01, 1.01 ) else TextScaleDir = 0 -- How to set displayText:scale() to exactly 5 x ? end elseif TextScaleDir == 0 then if textXscale \> 0.01 then displayText:scale( 0.99, 0.99 ) else TextScaleDir = 1 -- How to set displayText:Scale() to exactly 0 x ? end end displayTextScale.text = tostring( textXscale ) end Runtime:addEventListener( "enterFrame", onEveryFrame ) end end -- ------------------------------------------------------------------------------------------------------------- function scene:hide( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then elseif ( phase == "did" ) then end end -- ------------------------------------------------------------------------------------------------------------- function scene:destroy( event ) local sceneGroup = self.view end -- ------------------------------------------------------------------------------------------------------------- scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) -- ------------------------------------------------------------------------------------------------------------- return scene
Can you post your code? I suspect there’s something else going on…for instance if you set scale twice in the same frame, you will only see the result of the second setting.
-- "main.lua" TextScaleDir = 1 local composer = require( "composer" ) composer.gotoScene( "sceneAnimatedTextTest" )
-- "sceneAnimatedTextTest.lua" local composer = require( "composer" ) local scene = composer.newScene() local displayText local displayTextScale local textXscale = 1 -- ------------------------------------------------------------------------------------------------------------- function scene:create( event ) local sceneGroup = self.view TextScaleDir = 1 local myRectangle = display.newRect( display.contentCenterX, display.contentCenterY, display.contentWidth, display.contentHeight ) myRectangle.strokeWidth = 5 myRectangle:setFillColor( 0.5 ) myRectangle:setStrokeColor( 0, 1, 0 ) sceneGroup:insert( myRectangle ) displayText = display.newText( "Hello World", display.contentCenterX, display.contentCenterY, "Font01.ttf", 20 ) displayText:setFillColor( 0, 1, 0 ) sceneGroup:insert( displayText ) displayTextScale = display.newText( "", display.contentCenterX, 50, "Font01.ttf", 30 ) displayTextScale:setFillColor( 0, 0, 0 ) sceneGroup:insert( displayTextScale ) end -- ------------------------------------------------------------------------------------------------------------- function scene:show( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then elseif ( phase == "did" ) then local function onEveryFrame( event ) textXscale = displayText.xScale if TextScaleDir == 1 then if textXscale \< 5 then displayText:scale( 1.01, 1.01 ) else TextScaleDir = 0 -- How to set displayText:scale() to exactly 5 x ? end elseif TextScaleDir == 0 then if textXscale \> 0.01 then displayText:scale( 0.99, 0.99 ) else TextScaleDir = 1 -- How to set displayText:Scale() to exactly 0 x ? end end displayTextScale.text = tostring( textXscale ) end Runtime:addEventListener( "enterFrame", onEveryFrame ) end end -- ------------------------------------------------------------------------------------------------------------- function scene:hide( event ) local sceneGroup = self.view local phase = event.phase if ( phase == "will" ) then elseif ( phase == "did" ) then end end -- ------------------------------------------------------------------------------------------------------------- function scene:destroy( event ) local sceneGroup = self.view end -- ------------------------------------------------------------------------------------------------------------- scene:addEventListener( "create", scene ) scene:addEventListener( "show", scene ) scene:addEventListener( "hide", scene ) scene:addEventListener( "destroy", scene ) -- ------------------------------------------------------------------------------------------------------------- return scene