I hope the OpenLaszlo Architect can answer your question, because from reading the documentation, I can't figure out what the difference between
<view>/source > > The URL from which to load the resource for this view. If this attribute is > set, the media for the view is loaded at runtime. and <view>/resource > A resource that is presented in the background of this view. The value can be > either the name of a resource defined with the resource tag, a URL, or a > pathname. If the value is a URL, the resource is requested when the view is > displayed. If it's a pathname, the file named by the pathname is compiled > into the application, and attached to this view. is. They seem to have a lot of overlap. I would think we could simplify this to be less mysterious. My guess is that they _used_ to be two separate interfaces, one which meant load my resource at runtime and the other which meant load my resource from a compiled-in resource, but people got so confused, we made the latter accept any of resource name, path, or general URL and heuristicate what the user could have meant. I guess we didn't apply the same generality to the former. It might be simpler if we required the argument to _always_ be an URL and used either standard scheme (like source="CID:logo", http://bit.ly/aojqC8) or created our own non-standard one (e.g., source="resource:logo") to specify the case where we mean a local compiled-in, named resource, and standard schemes (source="file:resources/logo.jpg", source="http:resources/logo.jpg") for the cases of creating an anonymous resource and loading the resource at runtime over http. If we say the default scheme is the one for resource names (either cid: or resource:) we would be backwards compatible. Maybe you want to file a bug/improvement request? --- As to the <resource> tag, that does seem a _little_ clearer: > This tag imports the object into the application, and binds it to a string > which can be used within a view from which I intuit the point of a <resource> is to compile the source _into_ the application, rather than loading it at runtime. And while <resource>/src does say its type is URL, it refines that by saying: > The path of a file that contains the source for this object. so, it seems reasonably clear that a resource is expected to be a local file available at compile time, and it's purpose is to make that file into "immediate" data that is available/compiled-into the app (and hence the app does not need an internet connection to load it's resources). This seems like a useful distinction to keep. On 2010-09-13, at 07:03, Raju Bitter wrote: > I did some more testing, and have some questions on the logic of the > code in setResource. According to the docs > (http://www.openlaszlo.org/lps4.8/docs/reference/) the src attribute > of a resource tag is an URL. The value of the src tag will be used to > call setResource on a view, when I assign a resource to a view, as in > this example: > > <canvas height="70"> > <resource name="logo" src="../images/logo.png"/> > <view resource="logo"/> > </canvas> > > At runtime, you can set a views resource by using > someView.setAttribute("source", resourceURL), or using > someView.setAttribute("resource", resourceURL). In that case, > LzSprite#setResource method is called. Actually this is a bit > confusing, since you can't use a URL within a resource tag's @src: > > <resource name="mountainRsc" src="http:resources/images/wetterstein.jpg" /> > > This will trigger a compiler error with the error message "unknown > protocol: http". If setAttribute("resource", http/https/app URL) works > at runtime, why even provide a setSource method? > > I attached a testcase for you with comments to the JIRA issue as well. > > > On Fri, Sep 10, 2010 at 1:14 AM, Raju Bitter > <[email protected]> wrote: >> Yes, based on my testing. Tested with image files and MP3 files for >> audio playback. >> >> On Thu, Sep 9, 2010 at 11:44 PM, Henry Minsky <[email protected]> wrote: >>> Raju, I'm going to file a JIRA request to track this change, is this the >>> only change you need to the LFC >>> to support AIR resources? >>> >>> >>> --- WEB-INF/lps/lfc/kernel/swf9/LzSprite.as (revision 17458) >>> +++ WEB-INF/lps/lfc/kernel/swf9/LzSprite.as (working copy) >>> @@ -363,7 +363,8 @@ >>> */ >>> public function setResource (r:String):void { >>> if (this.resource == r) return; >>> - if (r.indexOf('http:') == 0 || r.indexOf('https:') == 0) { >>> + if (r.indexOf('http:') == 0 || r.indexOf('https:') == 0 || >>> r.indexOf('app:') == 0) { >>> + // if (r.indexOf('http:') == 0 || r.indexOf('https:') == >>> 0) { >>> this.setSource( r ); >>> return; >>> } >>> >>> >>> -- >>> Henry Minsky >>> Software Architect >>> [email protected] >>> >>> >>> >> >
