AS3 :: Flash - Check For Objects Intercepting A Line Of Sight?
May 9, 2011
I've for a while now been trying to work out an efficient way to see if something is in something else's line of sight. A good example is having a sphere that fires a rocket at you if it can see you - but obviously not if you're behind a wall.
Here's how I generally went about doing this:
function cast(end:GameObject, walls:Array, accuracy:uint=10):Object
{
var xp:Number = skin.x;
var yp:Number = skin.y;
[Code].....
Works, but as we know this will get extremely slow with each new rocket added or as the amount of impassable objects increases.
I'm assuming there's a really simple efficient way that I'm missing - I mean, all games do it (Diablo, etc) with hundreds of enemies that don't do anything unless you're visible.
how the line of sight works in 2d? Which will be really help full for my 2d experiments. The experiment am working is a simple 2d simulation. Player move in the world from one place to other , my world exactly looks like this. I did the character movement successfully from one way point to other (A to G) , my goal is - when the character passes each point it has to perform some search in that area before it leaves to next point. To achieve I felt way point is better solution , can anyone help me on this.
Edit :
As soon as the player enters a room/checkpoint I will take user to next scene like this where the pickups are place some where on the canvas and my player have to collect them all and leave the area - Back to Map scene.
I am making some sort of security game and i would like to have some visual line of sight. The problem is that i can't restrict my line of sight so my cops can't see through the walls. Below you find the design, in which they can look through windows, but not walls. Further below you find an illustration of what my problem is exactly.[code]...
How to make somethig that will check all var's on the objects in the _root time line? lets say "allObjects" means all the objects in the _root time line:
So lets say that I have 20 pieces of an "A" MC and one of a "B" MC, 10 of the "A" MC have the code "_loc1=1" and the rest have "_loc1=0" and if I roll over the 10 A MC that have _loc1=1 the B MC will gotoAndStop(2) but if I roll over the rest of the A MC's nothing happens.
(the A MC's have different names like: planetX; ship21; enemy61; ... )And a var in the _root time line will have the name of the MC that has the mouse over it (rolled over it)So something like: var MCname = "planetX"
I am working on an application that is near the end of its development cycle and has mostly passed user testing. We recently realized that having flex convert dates to the client's local timezone is not desired, as all of our dates are in EST and contain no time data. Since BlazeDS sends dates in UTC, this results in the dates being converted to the day before in timezones west of EST.
The best solution is to go in and refactor all dates to adjust for the timezone offset, but that is just not doable at this stage. Since all dates in our application don't care about time, I would really like to be able to intercept all Date objects that come across BlazeDS and adjust for the timezone offset.
My flash files are in the root directory, while I have seperate HTML pages in different folders. I want the Flash project to react slightly differently depending on what web page the project was opened from.
I'm making a very simple game that lets you draw a curve by hand (using lineTo to the mouse position on mousemove) but now, I need to check wether the line intersects wiith another part of the same line (e.g. a loop)
I first used an onrollover command, and that worked, but not always because the mouse moved too fast (same with hittest with mouse). Then I pre-drawed the line in another mc, used hittest on it, and if it wasn't intersecting, draw it in the real mc. But that didn't work because it used the bounds to test. I guess the best way is to use some mathematical formula, but that would mean I have to save all my coordinates in an array..
Given a MovieClip containing a vectorshape (loaded from the library) - is there a way to check whether a line (from point(x1,y2) to point(x2,y2) intersects this shape?
A third party web site displays streaming alphanumeric data in a Flash application (.swf). I would like to capture that data to be used in my own desktop application. Is this possible? If yes, then what are my options e.g. using VB.NET?
Some of my Flash application components require to intercept Ctrl + F4 keyboard events. Unfortunately, the KeyboardEvent is not caught when running the app under IE since it is conflicting with the IE native shortcut (closing the active tab). Is there a way (ideally relying on Flash principles) to intercept such keystrokes?
Imagine situation when child component is scaled and parent component is scaled as well. I want line to be drawn without scaling in child component and to be scaled in parent. Is it possible to achieve this?
I'm using Flash 8 and AS2 I am attempting to make some code that checks whether or not a line that rotates around the screen is hitting a movie clip. Here is my code (with comments explaining it):
I'm trying to limit a client's video playback to 10 seconds.After that,the client should be disconnected.I have to allow time for connection and buffering, so I can't just disconnect them after 10 seconds.I was hoping to override the play command, so I can force the length parameter to 10,
I have a test where I have to check that when a particular item is selected on a web page, the item is loaded into a flash object on the same page. This being done via Javascript. I have to check whether the parameters being passed to flash by Javascript are correct(i.e. the right item is being passed to flash). The only way I can imagine as of now is to intercept these javascript functions and somehow read their parameters.
I was reading another query on this board about NOT using eval, as it had become deprecated, for attaching a name to a new MC. I have been using eval to check through all the objects, and to add ones with a certain name to an array.
for (i in this) {if ((typeof (eval(i))) == "movieclip" && substring(i, 1, 5)== "names") {
would there be another method of doing this using dot notation? sorry if this question seems a little muddled. I am new to flash, some things in it make a lot of sense and others are still confusing me.
Got to the point where the hole in my AS3 knowledge is getting large!Realising I have confusion about the relationship of:Body of code on first frame of AS3 file.(Which I have so far used to create instances of library objects using addchild and make calls to class code).Is this code called the document code? What do people call it?Numerous classes linked together by extending each other etc.Library objects (usually graphical objects)Should it be done differently? have the following problems due to lack of understanding:Addchild complicated from a class but straight forward in main body code.Cant call functions on the main body code from classes, because class code does not know the main body code exists?
Not sure the best way to do this. I have a class we will call DropActivity, here is the code
[Code]...
when the stopDraggingMe() method is called from another object (code shown below) I need to see all the objects on the stage to see what objects on the stage my currently selected movie clip is over and assign it to the dropCheck.checkAgainst method (that will be checked against an array to see if it can in fact be dropped, if so set the canBeDropped value to true and therefor run the .stopDrag() ). I have read using root is not a good coding practice in AS 3.
Is there an easy way to compare two TextFlow objects with each other? I have two text flow objects that are created with TextConverter.importToFlow() and want to check if they are equal or not. Only way I found so far is to use TextConverter.export() to export them to a string then compare which seems bit convoluted...
i have several check boxes and input texts on stage and would like to null out their values with a reset button but seem to be having issues, can anyone take a look
[Code]....
TypeError: Error #1010: A term is undefined and has no properties. at Main/resetHandler()
I've been using the Flex "HTML" component in my AIR 2.7 project. It's a wrapper for the HtmlLoader class. The problem is that empty referers in HTML headers are automatically set to "app://[appname].swf". This is not standard as default referer behavior should be to not set any referer at all. The consequence is I'm getting denied access on certain websites using iframes (as location changes from an iframe set an empty referer). I have no control over those requests has no event is fired when changed the source of an iframe.
I have thought about the possibility of intercepting all network calls and setting the referer to empty when necessary before sending the message. My app is only a container in wich a module is loaded for easier updates so maybe I could set up a proxy on top or something like that. Is there any way to intercept network messages in Flex??
I'm trying to make a short script in AS3 which will simply take some animated lines that are in a movieclip (pre-animated in library) and draw a 15px diameter circle around each vertex / point of the lines.
how to access the vertices of the lines in actionscript!
I have this code inside an ENTER_FRAME event. I'm trying to move the "ball" from its x- and y-position to a tartget x- and y- position:
Code: if (processClick) { if (ball.x < targetX) ball.x += 8; if (ball.x > targetX) ball.x -= 8;
[Code]....
But the "ball" doesn't move in a straight line, I think it is because the x- and y-movements are processed independently?
Is there a way thay I can make the "ball" move in a straight line from the starting point to the target point?
Also, is there maybe a way to manually create a tween between the starting point and the target point using actionscript? If I export the "ball" movieclip for actionscript?
Actually my project is about dynamic readjusting of nodes i.e. let say if you have 15 nodes( assume point objects) and suppose lines are drawn between any randomly selected two nodes,then the corresponding figure obtained should be readjusted that no two lines should intersect except at nodes.
I have 2 or more objects created dynamically on stage. Each object has other smaller objects as children (I called them targets).What I am trying to do is to draw lines between these targets.By the way, in the near future these parent objects will need to be drag around the stage and the lines will need to relocate to the new locations when the dragging is complete.But at this point I am having problems getting the lines to show up in the proper locations.So this first piece of code creates the targets and the second piece is where I am trying to draw the lines between targets. I tried to use localX and localY but I can't get it working.
Code: function handleSubmitFile(evt:Event):void { var numberChoices:uint = mcAttribute1.comboAttribute.selectedItem.data;[code].....