查看文章 |
[翻译]LoaderMax使用指导(二)
2010-10-23 3:10
翻译:闪刀浪子 www.iflashigame.com http://hi.baidu.com/mr_ziqiang 点这里看LoaderMax使用指导(一) 7、设定区域对image/video/swf进行裁剪 假设你想让一张图片等比缩放以适应到某个区域,但是不希望在区域的边缘留下空白区。怎么做?你可以首先设定scaleMode属性为"proportionalOutside",然后将"crop"属性设置为true。这样可以使图片等比填充整个区域,并且讲超出区域的部分裁剪掉。下面给一段代码: var loader:ImageLoader = new ImageLoader("1.jpg", {width:200, height:100, scaleMode:"proportionalOutside", crop:true, container:this, x:50, y:70}); 8、progress 和 rawProgress有什么不同?(译者注:这个特性需要特别了解) 所有的加载器都有一个"progress"属性来显示"bytesLoades"和"bytesTotal"的比例(即进度)。但是LoaderMax类还多了一个"rawProgress"的属性,这个属性将所有的加载文件同等对待而且与文件大小无关。它在一些特定的场合下会比较有用:比如你发现你的进度条不稳定或者你想忽略文件大小的评估同时不想给你的加载器设定estimatedBytes 。 下面有个例子,可以让你充分了解"progress"和"rawProgress"在各种情景下的比较。你会发现"rawProgress"进度条不会突变,但是相对于以文件大小为计算依据的方式速度会一会儿快,一会儿慢。 点击load()按钮你可以看到"progress"非常精确并且平滑。(这是因为estimatedBytes的值是正确的)接下来你试着改变estimatedBytes的值或者删除estimatedBytes的值看一下省略的时候的运行情况。试着取消“auditSize”的复选框,可以观察“auditSize”为false的情况下是如何运行的。更多有关进度条暴增和回退的问题原因会在下一节做讲解。 9、避免进度条的抖动(暴增或者回退) 不知道你有没有在使用中遇到过进度条暴增活着回退的情况。一般在单一加载的时候不会出现这种情况,但是当你用一个LoaderMax实例去加载多个文件的一些特殊场合会发生这种情况。首先说一下原因和我所使用的方案。 为了精确的计算一组加载器总的进度,我们最关键的是需要知道每一个文件的文件大小。但是在文件还没有开始加载的时候我们如何知道要加载的大小呢?LoaderMax通过两种方式来处理:第一种——在创建你的loader的时候随意指定一个值给"estimatedBytes"属性,就像这样: new ImageLoader("1.jpg", {estimatedBytes:26000});estimatedBytes 选项,让LoaderMax自己去计算。给一个估计的文件大小值设置到estimatedBytes 这种方式需要给一个合适的值,否则过大进度条会暴增,过小进度条会回退。 比较省事、非常不精确、无需额外时间 关闭自动校验长度开关也不给默认的文件大小值,此时文件长度会使用默认的20000字节为长度。 省事、比较精确、无需额外时间 关闭自动校验长度开关改用"rawProgress"来代替"progress"。由于rawProgress的计算方式与文件长度有关仅与文件个数有关,所以没有必要校验文件长度了。 10、每一个文件都会请求两次吗? 不是这样的。事实上只有当你没有设置estimatedBytes并且自动校验长度开关打开的情况下才需要请求两次服务器。多出的这一次是用于校验文件长度的。 11、集成roo swf到LoaderMax进度 加入你要获取一个很大的swf文件,还需要加载很多素材,同时你还希望了解所有这些的进度(包括这个root Swf)。你可以这样来做: var queue:LoaderMax = new LoaderMax({onProgress:progressHandler, onComplete:completeHandler}); queue.append( new SelfLoader(this) ); //just to include the root swf in the progress calculations queue.append( ...append your other loaders... ); queue.load(); com.greensock.loading.data包里面的类来设定值对象,并作为参数传给记载器。比如:var config:LoaderMaxVars = new LoaderMaxVars(); config.name = "queue1"; config.onComplete = completeHandler; config.onProgress = progressHandler; config.maxConnections = 1; var queue:LoaderMax = new LoaderMax(config); 终于翻译完了,呵呵 |
最近读者:

