Can you use the "base" attribute in the params to set somewhere that you can then use relative paths.

|<param name="base" value="http://www.example.com/pages/";>

http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_04157&sliceId=2 <http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_04157&sliceId=2>


Glen
|
Bob Leisle wrote:
One simple solution would be to physically move your controller swf into the screens directory and run it from there. Then they'll all have the same path and no retrofitting needed.

hth,
Bob

Amanda Kuek wrote:
@Deepanjan Das, @JC

Thanks for your replies! It seems that, despite my fondest hopes, there is no easy way to "retro-fit" hundreds of SWFs originally built without this
loadMovie() requirement in mind.

Cheers and thanks :-)


On Jan 30, 2008 8:05 PM, Hans Wichman <[EMAIL PROTECTED]>
wrote:

Hi,

check this out:
http://objectpainters.com/blog/2007/01/03/where-am-i-relative-paths/

The getPath things works in most cases. If you want a more complex version
that takes more things into account, you can use this:
You will need to replace the RuntimeExceptions with your own error
mechanism
(eg traces, regular errors).

 /**
 * Resolves pAssetPath against pBasePath.
 *
* - if pAssetPath is not a relative path, pAssetPath is returned (eg the
full url)
 * - if pBasePath is an empty path, pAssetPath is returned
 * - if pBasePath is a relative path, an error is thrown
* - in all other situation a path is returned which may still be or not
valid.
 *
 * @param pAssetPath, a full or relative url
* @param pBasePath, a full or empty url, this url MAY contain a file as
well, it is stripped automatically
 *
 */
 public static function resolve (pAssetPath:String,
pBasePath:String):String
{
 //no base path
 if (pBasePath == null || pBasePath.length == 0) return pAssetPath;
 if (pAssetPath == null) {
   throw new RuntimeException (
    "Assetpath cannot be null.",
    Path, arguments.callee, null, null);
 }

 //file asset path
if (pAssetPath.indexOf ("http") == 0 || pAssetPath.indexOf ("ftp") == 0
||
  pAssetPath.indexOf ("rmtp") == 0 || pAssetPath.indexOf ("file") == 0)
return pAssetPath;
 //asset is relative, test basepath for correctness
if (pBasePath.indexOf ("http") != 0 && pBasePath.indexOf ("ftp") != 0 &&
  pBasePath.indexOf ("rmtp") != 0 && pBasePath.indexOf ("file") != 0) {
   throw new RuntimeException (
"Basepath is not null and not a full url, but needs to be either empty
or a full url.",
    Path, arguments.callee, null, null);
  }

 //so now we know that pAssetPath is a relative url and pBasePath is a
full
url.
//first normalize both urls so that we are dealing with only one type of
separator
 var lAssetPath:String = pAssetPath.split
("\\").join("/<file://%22).join(%22/>
");
 var lBasePath:String = pBasePath.split
("\\").join("/<file://%22).join(%22/>
");
 //strip everything after ? to strip parameters from basepath
 if (lBasePath.indexOf("?") > -1) {
  lBasePath = lBasePath.substr (lBasePath.lastIndexOf("?"));
 }
 //check if basepath ends with /, if not check if everything after /
contains a .
 //if it ends with / it is a directory, if it doesnt end with / and
everything after contains a . we assume
 //we are dealing with a file, otherwise a directory
 if (lBasePath.charAt (lBasePath.length-1) != "/") {
  //and the last part contains a . cut it off
  var lLastDir:String = lBasePath.substr (lBasePath.lastIndexOf("/"));
  if (lLastDir.indexOf (".") != -1) {
   //dealing with file
   lBasePath = lBasePath.substr (0, lBasePath.lastIndexOf("/")+1);
  } else {
//assume the last part was a dir and the trailing slash was forgotten,
so add it
   lBasePath += "/";
  }
 }

 //at this point we have a relative url and full directory path with a
trailing /
 //now create two stacks
 var lAssetStack:Array = lAssetPath.split ("/");
 var lBaseStack:Array = lBasePath.split ("/");

//remove trailing / from baseStack to provide a correct starting point, //our invariant is that each directory 'starts' with a slash and not ends
 lBaseStack.pop();

 //remove any superflous items (pointers to current directory
 //. points to current dir and isnt relative
 //"" points to double slashes or a starting slash, we remove that too
 while (lAssetStack[0] == "." || lAssetStack[0] == "") {
  lAssetStack.shift();
 }

 //remove .. from assetStack AND end of basestack
 while (lAssetStack[0] == "..") {
  lAssetStack.shift();
  lBaseStack.pop();
 }

 return lBaseStack.join("/")+"/"+lAssetStack.join("/");
 }

Usage eg:
xml.load (Path.resolve ("assets/config.xml"), _clip._url));

greetz
JC


On Wed, Jan 30, 2008 at 6:24 AM, Deepanjan Das <[EMAIL PROTECTED]>
wrote:

Hi,
You need to keep duplicate files if you want it to work as single and
also
when loaded from main movie.
Easiest way is to create an xml directory at the place where the main
movie
resides and set the path as "xml/1.xml"

also copy this directory in the screens directory

so ths ame path will work for both :)
Hope this helps

Deepanjan Das

On Jan 30, 2008 10:10 AM, confusticate and bebother these dwarves! <
 [EMAIL PROTECTED]> wrote:

Hello Flashcoders,

I'm trying to make a main movie ("controller.swf") that loads other
movies
("screen1.swf", "screen2.swf", etc), which are stored in a
subdirectory
called "screens".

In controller.swf I'm using loadMovie("screens/screenx.swf") to load
the
movies from the "screens" subdirectory, and this works fine. But the
problem
is that the movies in the "screens" subdirectory often reference XML
files
(which also live in the "screens" subdirectory). All works well when
you
play the individual screenx.swf files, obviously, but when you play
controller.swf, it is looking for the XML files in the same directory
as
itself (one directory "up").

How can I fix this problem so that playing controller.swf works fine,
as
well as playing each individual screenx.swf file in the "screens"
subdirectory? Is this possible? It seems like such a simple idea, but
I'm
so
stumped.

I should mention that this project is not actually going online - it
is
going to be converted to an EXE using Zinc and distributed via CD. So
I
can't use absolute paths.

Please! Heelp! Thanks!
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders





--

Glen Pike
01736 759321
www.glenpike.co.uk <http://www.glenpike.co.uk>
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to