It’s easy, just look:
I’ve thought that to concatenate strings then periods were to be used, but you can use the echo like a function an use commas instead:
1 | echo 'The value of some variable is: ', $some_variable, '<br />'; |
I’ve thought that to concatenate strings then periods were to be used, but you can use the echo like a function an use commas instead:
1 | echo 'The value of some variable is: ', $some_variable, '<br />'; |
Here, I just added a white stage sized MovieClip ‘Floor’ and made the stage background black:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | //-----Loaders----- //Mouse handlers import flash.events.MouseEvent //Mouse point (position) import flash.geom.Point //Dynamic line import flash.display.MovieClip //Global variables import globals //-----Create visual placeholders----- //New MovieClip var lineOfSight:MovieClip = new MovieClip() lineOfSight.name = "lineOfSight" //Attach it addChild(lineOfSight) //-----Define key press automation----- var keys:Array = new Array() var key:Number = 0 var minKeys:Number = 37 var maxKeys:Number = 40 for(key = minKeys; key < maxKeys; key++){ keys[key] = false } //-----Variable definition----- //Movement speed var speed:Number = 4 //Line / sight distance var sightDistance:Number = 100 //Line / sight spread var sightSpread:Number = 60 //Line / sight accuracy (How many lines) var sightAccuracy:Number = 100 //Line / sight hit accuracy (How many 'part' lines) var sightHitAccuracy:Number = 100 //Dont change these variables var radiusX:Number = Player.width / 2 var radiusY:Number = Player.height / 2 var mouseIsDown:Boolean = false //-----Add key listeners----- stage.addEventListener(KeyboardEvent.KEY_DOWN, key_Down) stage.addEventListener(KeyboardEvent.KEY_UP, key_Up) stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse_Down) stage.addEventListener(MouseEvent.MOUSE_UP, mouse_Up) stage.addEventListener(MouseEvent.MOUSE_MOVE, mouse_Move) stage.addEventListener(Event.ENTER_FRAME, enter_Frame) //Add key functions function key_Down(event:KeyboardEvent){ keys[event.keyCode] = true } function key_Up(event:KeyboardEvent){ keys[event.keyCode] = false } function mouse_Down(event:MouseEvent){ mouseIsDown = true Floor.mask = lineOfSight } function mouse_Up(event:MouseEvent){ mouseIsDown = false //Remove line lineOfSight.graphics.clear() Floor.mask = undefined } function mouse_Move(event:MouseEvent){ var target:* = event.target var location:Point = new Point(target.mouseX, target.mouseY) location = target.localToGlobal(location) //Global variables for mouse positions globals.data.mousePositionX = location.x globals.data.mousePositionY = location.y } function enter_Frame(event:Event){ move_Player() collision_Player() lineOfSight.graphics.clear() create_Sight(mouseIsDown) } function move_Player(){ if(keys[37]){ //Left Player.x -= speed } if(keys[38]){ //Up Player.y -= speed } if(keys[39]){ //Right Player.x += speed } if(keys[40]){ //Down Player.y += speed } } function collision_Player(){ while(Walls.hitTestPoint(Player.x - radiusX, Player.y, true)){ Player.x ++ } while(Walls.hitTestPoint(Player.x + radiusX, Player.y, true)){ Player.x -- } while(Walls.hitTestPoint(Player.x, Player.y - radiusY, true)){ Player.y ++ } while(Walls.hitTestPoint(Player.x, Player.y + radiusY, true)){ Player.y -- } } function create_Sight(status):void{ if(status){ //Read global variables for mouse position and convert into local variable var xMouse:Number = globals.data.mousePositionX var yMouse:Number = globals.data.mousePositionY var xDif:Number = xMouse - Player.x var yDif:Number = yMouse - Player.y var sightAngleBaseRadians:Number = Math.atan2(yDif, xDif) var sightAngleBase:Number = 360 * sightAngleBaseRadians / (2 * Math.PI) lineOfSight.graphics.lineStyle(3,0xff0000) lineOfSight.graphics.beginFill(0xff0000) //Find start of line var startX:Number = Player.x + Math.cos(sightAngleBase * Math.PI / 180) * radiusX var startY:Number = Player.y - Math.sin(sightAngleBase * Math.PI / 180) * -radiusX //Draw the line lineOfSight.graphics.moveTo(startX, startY) for (var sightAngle:Number = 0; sightAngle <= sightSpread; sightAngle += (sightSpread/sightAccuracy)){ //Find individual line angle var sightAngleIndividual = (sightAngleBase-(sightSpread/2) + sightAngle)*(Math.PI/180) for (var sightLength:Number = 0; sightLength < sightDistance; sightLength += (sightDistance/sightHitAccuracy)){ //Find end of line var endX:Number = Player.x + Math.cos(sightAngleIndividual) * sightLength var endY:Number = Player.y + Math.sin(sightAngleIndividual) * sightLength if(Walls.hitTestPoint(endX, endY, true)){ break } } lineOfSight.graphics.lineTo(endX, endY) } lineOfSight.graphics.lineTo(startX, startY) } } |
Just click to turn off the lights and on with the torch
Let’s make it actually look like a sight, let’s join up the dots:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | //-----Loaders----- //Mouse handlers import flash.events.MouseEvent //Mouse point (position) import flash.geom.Point //Dynamic line import flash.display.MovieClip //Global variables import globals //-----Create visual placeholders----- //New MovieClip var lineOfSight:MovieClip = new MovieClip() lineOfSight.name = "lineOfSight" //Attach it addChild(lineOfSight) //-----Define key press automation----- var keys:Array = new Array() var key:Number = 0 var minKeys:Number = 37 var maxKeys:Number = 40 for(key = minKeys; key < maxKeys; key++){ keys[key] = false } //-----Variable definition----- //Movement speed var speed:Number = 4 //Line / sight distance var sightDistance:Number = 100 //Line / sight spread var sightSpread:Number = 60 //Line / sight accuracy (How many lines) var sightAccuracy:Number = 50 //Line / sight hit accuracy (How many 'part' lines) var sightHitAccuracy:Number = 50 //Dont change these variables var radiusX:Number = Player.width / 2 var radiusY:Number = Player.height / 2 var mouseIsDown:Boolean = false //-----Add key listeners----- stage.addEventListener(KeyboardEvent.KEY_DOWN, key_Down) stage.addEventListener(KeyboardEvent.KEY_UP, key_Up) stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse_Down) stage.addEventListener(MouseEvent.MOUSE_UP, mouse_Up) stage.addEventListener(MouseEvent.MOUSE_MOVE, mouse_Move) stage.addEventListener(Event.ENTER_FRAME, enter_Frame) //Add key functions function key_Down(event:KeyboardEvent):void{ keys[event.keyCode] = true } function key_Up(event:KeyboardEvent):void{ keys[event.keyCode] = false } function mouse_Down(event:MouseEvent):void{ mouseIsDown = true } function mouse_Up(event:MouseEvent):void{ mouseIsDown = false //Remove line lineOfSight.graphics.clear() } function mouse_Move(event:MouseEvent):void{ var target:* = event.target var location:Point = new Point(target.mouseX, target.mouseY) location = target.localToGlobal(location) //Global variables for mouse positions globals.data.mousePositionX = location.x globals.data.mousePositionY = location.y } function enter_Frame(event:Event):void{ move_Player() collision_Player() lineOfSight.graphics.clear() create_Sight(mouseIsDown) } function move_Player(){ if(keys[37]){ //Left Player.x -= speed } if(keys[38]){ //Up Player.y -= speed } if(keys[39]){ //Right Player.x += speed } if(keys[40]){ //Down Player.y += speed } } function collision_Player(){ while(Walls.hitTestPoint(Player.x - radiusX, Player.y, true)){ Player.x ++ } while(Walls.hitTestPoint(Player.x + radiusX, Player.y, true)){ Player.x -- } while(Walls.hitTestPoint(Player.x, Player.y - radiusY, true)){ Player.y ++ } while(Walls.hitTestPoint(Player.x, Player.y + radiusY, true)){ Player.y -- } } function create_Sight(status):void{ if(status){ //Read global variables for mouse position and convert into local variable var xMouse:Number = globals.data.mousePositionX var yMouse:Number = globals.data.mousePositionY var xDif:Number = xMouse - Player.x var yDif:Number = yMouse - Player.y var sightAngleBaseRadians:Number = Math.atan2(yDif, xDif) var sightAngleBase:Number = 360 * sightAngleBaseRadians / (2 * Math.PI) lineOfSight.graphics.lineStyle(3,0xff0000) //Find start of line var startX:Number = Player.x + Math.cos(sightAngleBase * Math.PI / 180) * radiusX var startY:Number = Player.y - Math.sin(sightAngleBase * Math.PI / 180) * -radiusX //Draw the line lineOfSight.graphics.moveTo(startX, startY) for (var sightAngle:Number = 0; sightAngle <= sightSpread; sightAngle += (sightSpread/sightAccuracy)){ //Find individual line angle var sightAngleIndividual = (sightAngleBase-(sightSpread/2) + sightAngle)*(Math.PI/180) for (var sightLength:Number = 0; sightLength < sightDistance; sightLength += (sightDistance/sightHitAccuracy)){ //Find end of line var endX:Number = Player.x + Math.cos(sightAngleIndividual) * sightLength var endY:Number = Player.y + Math.sin(sightAngleIndividual) * sightLength if(Walls.hitTestPoint(endX, endY, true)){ break; } } lineOfSight.graphics.lineTo(endX, endY) } lineOfSight.graphics.lineTo(startX, startY) } } |
However, by changing the accuracy variables to:
34 35 36 37 | //Line / sight accuracy (How many lines) var sightAccuracy:Number = 100 //Line / sight hit accuracy (How many 'part' lines) var sightHitAccuracy:Number = 100 |
Which results in:
By increasing the accuracy, you decrease the game speed which should be noticeable in the following:
34 35 36 37 | //Line / sight accuracy (How many lines) var sightAccuracy:Number = 300 //Line / sight hit accuracy (How many 'part' lines) var sightHitAccuracy:Number = 300 |
So, I created a new MovieClip containing a shape – the walls. That’s right, we now have collisions!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | //-----Loaders----- //Mouse handlers import flash.events.MouseEvent //Mouse point (position) import flash.geom.Point //Dynamic line import flash.display.MovieClip //Global variables import globals //-----Create visual placeholders----- //New MovieClip var lineOfSight:MovieClip = new MovieClip() lineOfSight.name = "lineOfSight" //Attach it addChild(lineOfSight) //-----Define key press automation----- var keys:Array = new Array() var key:Number = 0 var minKeys:Number = 37 var maxKeys:Number = 40 for(key = minKeys; key < maxKeys; key++){ keys[key] = false } //-----Variable definition----- //Movement speed var speed:Number = 4 //Line / sight distance var sightDistance:Number = 100 //Line / sight spread var sightSpread:Number = 60 //Line / sight accuracy (How many lines) var sightAccuracy:Number = 10 //Line / sight hit accuracy (How many 'part' lines) var sightHitAccuracy:Number = 50 //Dont change these variables var radiusX:Number = Player.width / 2 var radiusY:Number = Player.height / 2 var mouseIsDown:Boolean = false //-----Add key listeners----- stage.addEventListener(KeyboardEvent.KEY_DOWN, key_Down) stage.addEventListener(KeyboardEvent.KEY_UP, key_Up) stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse_Down) stage.addEventListener(MouseEvent.MOUSE_UP, mouse_Up) stage.addEventListener(MouseEvent.MOUSE_MOVE, mouse_Move) stage.addEventListener(Event.ENTER_FRAME, enter_Frame) //Add key functions function key_Down(event:KeyboardEvent):void{ keys[event.keyCode] = true } function key_Up(event:KeyboardEvent):void{ keys[event.keyCode] = false } function mouse_Down(event:MouseEvent):void{ mouseIsDown = true } function mouse_Up(event:MouseEvent):void{ mouseIsDown = false //Remove line lineOfSight.graphics.clear() } function mouse_Move(event:MouseEvent):void{ var target:* = event.target var location:Point = new Point(target.mouseX, target.mouseY) location = target.localToGlobal(location) //Global variables for mouse positions globals.data.mousePositionX = location.x globals.data.mousePositionY = location.y } function enter_Frame(event:Event):void{ move_Player() collision_Player() lineOfSight.graphics.clear() create_Sight(mouseIsDown) } function move_Player(){ if(keys[37]){ //Left Player.x -= speed } if(keys[38]){ //Up Player.y -= speed } if(keys[39]){ //Right Player.x += speed } if(keys[40]){ //Down Player.y += speed } } function collision_Player(){ while(Walls.hitTestPoint(Player.x - radiusX, Player.y, true)){ Player.x ++ } while(Walls.hitTestPoint(Player.x + radiusX, Player.y, true)){ Player.x -- } while(Walls.hitTestPoint(Player.x, Player.y - radiusY, true)){ Player.y ++ } while(Walls.hitTestPoint(Player.x, Player.y + radiusY, true)){ Player.y -- } } function create_Sight(status):void{ if(status){ //Read global variables for mouse position and convert into local variable var xMouse:Number = globals.data.mousePositionX var yMouse:Number = globals.data.mousePositionY var xDif:Number = xMouse - Player.x var yDif:Number = yMouse - Player.y var sightAngleBaseRadians:Number = Math.atan2(yDif, xDif) var sightAngleBase:Number = 360 * sightAngleBaseRadians / (2 * Math.PI) lineOfSight.graphics.lineStyle(3,0xff0000) for (var sightAngle:Number = 0; sightAngle <= sightSpread; sightAngle += (sightSpread/sightAccuracy)){ //Find individual line angle var sightAngleIndividual = (sightAngleBase-(sightSpread/2) + sightAngle)*(Math.PI/180) //Find start of line var startX:Number = Player.x + Math.cos(sightAngleBase * Math.PI / 180) * radiusX var startY:Number = Player.y - Math.sin(sightAngleBase * Math.PI / 180) * -radiusX //Keep moving line in sections for (var sightLength:Number = 0; sightLength < sightDistance; sightLength += (sightDistance/sightHitAccuracy)){ //Find end of line var endX:Number = Player.x + Math.cos(sightAngleIndividual) * sightLength var endY:Number = Player.y + Math.sin(sightAngleIndividual) * sightLength //Stop extending the line once it hits the walls if(Walls.hitTestPoint(endX, endY, true)){ break; } } //Draw the line lineOfSight.graphics.moveTo(startX, startY) lineOfSight.graphics.lineTo(endX, endY) } } } |
That’s what we want, more lines! So, here it is:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | //-----Loaders----- //Mouse handlers//-----Loaders----- //Mouse handlers import flash.events.MouseEvent //Mouse point (position) import flash.geom.Point //Dynamic line import flash.display.MovieClip //Global variables import globals //-----Create visual placeholders----- //New MovieClip var lineOfSight:MovieClip = new MovieClip() lineOfSight.name = "lineOfSight" //Attach it addChild(lineOfSight) //-----Define key press automation----- var keys:Array = new Array() var key:Number = 0 var minKeys:Number = 37 var maxKeys:Number = 40 for(key = minKeys; key < maxKeys; key++){ keys[key] = false } //-----Variable definition----- //Movement speed var speed:Number = 4 //Line / sight distance var sightDistance:Number = 100 //Line / sight spread var sightSpread:Number = 60 //Line / sight accuracy var sightAccuracy:Number = 10 //Dont change these variables var radius:Number = Player.width / 2 var mouseIsDown:Boolean = false //-----Add key listeners----- stage.addEventListener(KeyboardEvent.KEY_DOWN, key_Down) stage.addEventListener(KeyboardEvent.KEY_UP, key_Up) stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse_Down) stage.addEventListener(MouseEvent.MOUSE_UP, mouse_Up) stage.addEventListener(MouseEvent.MOUSE_MOVE, mouse_Move) stage.addEventListener(Event.ENTER_FRAME, enter_Frame) //Add key functions function key_Down(event:KeyboardEvent):void{ keys[event.keyCode] = true } function key_Up(event:KeyboardEvent):void{ keys[event.keyCode] = false } function mouse_Down(event:MouseEvent):void{ mouseIsDown = true } function mouse_Up(event:MouseEvent):void{ mouseIsDown = false //Remove line lineOfSight.graphics.clear() } function mouse_Move(event:MouseEvent):void{ var target:* = event.target var location:Point = new Point(target.mouseX, target.mouseY) location = target.localToGlobal(location) //Global variables for mouse positions globals.data.mousePositionX = location.x globals.data.mousePositionY = location.y } function enter_Frame(event:Event):void{ move_Player() lineOfSight.graphics.clear() create_Sight(mouseIsDown) } function move_Player(){ if(keys[37]){ //Left Player.x -= speed } if(keys[38]){ //Up Player.y -= speed } if(keys[39]){ //Right Player.x += speed } if(keys[40]){ //Down Player.y += speed } } function create_Sight(status):void{ if(status){ //Read global variables for mouse position and convert into local variable var xMouse:Number = globals.data.mousePositionX var yMouse:Number = globals.data.mousePositionY var xDif:Number = xMouse - Player.x var yDif:Number = yMouse - Player.y var sightAngleBaseRadians:Number = Math.atan2(yDif, xDif) var sightAngleBase:Number = 360 * sightAngleBaseRadians / (2 * Math.PI) lineOfSight.graphics.lineStyle(3,0xff0000) for (var sightAngle:Number = 0; sightAngle <= sightSpread; sightAngle += (sightSpread/sightAccuracy)){ //Find individual line angle var sightAngleIndividual = (sightAngleBase-(sightSpread/2) + sightAngle)*(Math.PI/180) //Find start of line var startX:Number = Player.x + Math.cos(sightAngleBase * Math.PI / 180) * radius var startY:Number = Player.y - Math.sin(sightAngleBase * Math.PI / 180) * -radius //Find end of line var endX:Number = startX + Math.cos(sightAngleIndividual) * sightDistance var endY:Number = startY + Math.sin(sightAngleIndividual) * sightDistance //Draw the line lineOfSight.graphics.moveTo(startX, startY) lineOfSight.graphics.lineTo(endX, endY) } } } |
The globals class can be found here:
http://www.stormation.info/2011/05/as3-global-variables/
The code is quite well commented:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | //-----Loaders----- //Mouse handlers import flash.events.MouseEvent //Mouse point (position) import flash.geom.Point //Dynamic line import flash.display.MovieClip //Global variables import globals //-----Create visual placeholders----- //New MovieClip var lineOfSight:MovieClip = new MovieClip() lineOfSight.name = "lineOfSight" //Attach it addChild(lineOfSight) //-----Define key press automation----- var keys:Array = new Array() var key:Number = 0 var minKeys:Number = 37 var maxKeys:Number = 40 for(key = minKeys; key < maxKeys; key++){ keys[key] = false } //-----Variable definition----- //Movement speed var speed = 4 //Line / sight distance var sightDistance = 100 //Dont change these variables var radius = Player.width / 2 var mouseIsDown = false //-----Add key listeners----- stage.addEventListener(KeyboardEvent.KEY_DOWN, key_Down) stage.addEventListener(KeyboardEvent.KEY_UP, key_Up) stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse_Down) stage.addEventListener(MouseEvent.MOUSE_UP, mouse_Up) stage.addEventListener(MouseEvent.MOUSE_MOVE, mouse_Move) stage.addEventListener(Event.ENTER_FRAME, enter_Frame) //Add key functions function key_Down(event:KeyboardEvent):void{ keys[event.keyCode] = true } function key_Up(event:KeyboardEvent):void{ keys[event.keyCode] = false } function mouse_Down(event:MouseEvent):void{ mouseIsDown = true } function mouse_Up(event:MouseEvent):void{ mouseIsDown = false //Remove line lineOfSight.graphics.clear() } function mouse_Move(event:MouseEvent):void{ var target:* = event.target var location:Point = new Point(target.mouseX, target.mouseY) location = target.localToGlobal(location) //Global variables for mouse positions globals.data.mousePositionX = location.x globals.data.mousePositionY = location.y } function enter_Frame(event:Event):void{ move_Player() create_Sight(mouseIsDown) } function move_Player(){ if(keys[37]){ //Left Player.x -= speed } if(keys[38]){ //Up Player.y -= speed } if(keys[39]){ //Right Player.x += speed } if(keys[40]){ //Down Player.y += speed } } function create_Sight(status):void{ if(status){ //Read global variables for mouse position and convert into local variable var xMouse:Number = globals.data.mousePositionX var yMouse:Number = globals.data.mousePositionY var xDif:Number = xMouse - Player.x var yDif:Number = yMouse - Player.y var radians:Number = Math.atan2(yDif, xDif) var degrees:Number = 360 * radians / (2 * Math.PI) //Find start of line var startX:Number = Player.x + Math.cos(degrees * Math.PI / 180) * radius var startY:Number = Player.y - Math.sin(degrees * Math.PI / 180) * -radius //Find end of line var endX:Number = Player.x + Math.cos(degrees * Math.PI / 180) * sightDistance var endY:Number = Player.y - Math.sin(degrees * Math.PI / 180) * -sightDistance //Clear any existing lines lineOfSight.graphics.clear() lineOfSight.graphics.lineStyle(3,0xff0000) //Draw the line lineOfSight.graphics.moveTo(startX, startY) lineOfSight.graphics.lineTo(endX, endY) } } |
So, how does it work?
Firstly we need some sort of movement system:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | //Define key press automation var keys:Array = new Array() var key:Number = 0 var maxKeys = 100 for(key = 0; key < maxKeys; key++){ keys[key] = false } //Variable definition var speed = 4 //Add key listeners stage.addEventListener(KeyboardEvent.KEY_DOWN,key_Down) stage.addEventListener(KeyboardEvent.KEY_UP,key_Up) stage.addEventListener(Event.ENTER_FRAME,enter_Frame) //Add key functions function key_Down(event:KeyboardEvent):void{ keys[event.keyCode] = true } function key_Up(event:KeyboardEvent):void{ keys[event.keyCode] = false } function enter_Frame(event:Event):void{ move_Player() } function move_Player(){ if(keys[37]){ //Left Player.x -= speed } if(keys[38]){ //Up Player.y -= speed } if(keys[39]){ //Right Player.x += speed } if(keys[40]){ //Down Player.y += speed } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | getFps = function(){ if(testing == true){ time = getTimer() }else{ rate = int(1000/(getTimer()-time)) } testing = !testing return tempo } onEnterFrame = function() { trace(getFps()) } |
So basically use the frames at the moment to run the code which updated every frame with how much time has passed. Being frames per second it’s easy. So where is this usable? If you are making an online game you could use it to show the lag to server and locally, therefore adjust the timings of objects so they move at the same rate on the users and other peoples screens.
1 2 3 4 5 6 7 8 9 10 | function daysInMonth(year, month){ month = new Date(year, month, 0) return month.date } //January trace(daysInMonth(2011, 1)) //31 //February trace(daysInMonth(2011, 2)) //28 |
Simple, so next time you make a countdown over months, include this for the number of days!
1 | mail( string $to , string $subject , string $message [, string $additionalHeaders [, string $additionalParameters ]]) |
$to;
Who will receive the email, eg…
$subject;
The subject of the email
$content;
The body of the email message
$additionalHeaders;
In any Php mail massage the mail MUST contain a From field, it can be set in Php.ini as a default or in the additional headers variable.
$additionalParameters;
Here additional parameters can be used to pass additional flags as command line options to the program configured to be used when sending mail
EG:
1 2 3 4 5 6 7 8 9 10 | <?php $to = "reciever@example.com"; $subject = "Wahey, I can use Php"; $message = "But this is only a test"; $headers = "From: sender@example.com" . "\r\n" . "Reply-To: sendersotheremail@example.com" . "\r\n" . "X-Mailer: PHP/" . phpversion(); mail($to, $subject, $message, $headers); ?> |
Get it?
EvoLve theme by Theme4Press • Powered by WordPress Stormation
Innovation through Creation - Flash | PHP | HTML | XML | CSS | SQL - By Eliott Robson
