![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import fl.transitions.Tween;
import fl.transitions.easing.*;
public class LoaderExample extends Sprite {
private var url:String;
private var mc:MovieClip;
private var i:int;
private var loader:Loader;
public function LoaderExample() {
for (i=1; i<11; i++) {
url="ico/ico"+i+".jpg";
loader = new Loader();
mc = new MovieClip();
configureListeners(loader.contentLoaderInfo);
loader.addEventListener(MouseEvent.CLICK, clickHandler);
var request:URLRequest = new URLRequest(url);
loader.load(request);
mc.addChild(loader);
addChild(mc);
mc.alpha=0;
mc.x=+10
}
}
private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
}
private function completeHandler(event:Event):void {
trace("completeHandler: " + event);
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
}
private function initHandler(event:Event):void {
trace("initHandler: " + event);
var twa:Tween = new Tween(mc,"alpha",Strong.easeOut,0,100,10000,false);
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
private function openHandler(event:Event):void {
trace("openHandler: " + event);
}
private function progressHandler(event:ProgressEvent):void {
trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
}
private function unLoadHandler(event:Event):void {
trace("unLoadHandler: " + event);
}
private function clickHandler(event:MouseEvent):void {
trace("clickHandler: " + event);
var loader:Loader = Loader(event.target);
}
private function visibleTrue(event:Event):void {
}
}
}
Но мне нужно в цикле создать несколько мувиков, в каждый из них подгрузить картинку и сдвинуть ее вниз... но у меня почему то загружается только последняя картинка...в as3 новичок, так что не пинайте Я так понял нужно к каждому мувику прицепить лоадер, но не могу пока сообразить как это сделать... И еще так понимаю что все действия с мувиком такие как прицепить слушателя и сдвинуть и т.п нужно делать при инициализации...привожу весь код, потому что не уверен даже что все пакеты импортированы какие нужны... |
|
|||||
|
в вашем коде все загрузки начинаются параллельно. это не есть хорошо (так как в виндовз поумолчанию одновременно можно открыть не более 10 tcp соединени.)
к томуже не совсем понятна роль mc. попробуйте добавлять прямо на сцену. если не поможет, попробуй что-то типа этого. package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import fl.transitions.Tween;
import fl.transitions.easing.*;
public class LoaderExample extends Sprite {
private var url:String;
private var i:int;
private var curX:int;
private var loader:Loader;
public function LoaderExample() {
i = 1;
curX = 0;
url="ico/ico"+i+".jpg";
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
var request:URLRequest = new URLRequest(url);
loader.load(request);
}
private function completeHandler(event:Event):void {
trace("completeHandler: " + event);
var tmp:DisplayObject = event.target as DisplayObject;
addChild(tmp);
//здесь надо листенер удалить!!!! не буду врать - не помню как:)
++i;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
var request:URLRequest = new URLRequest(url);
loader.load(request);
}
}
}
__________________
я могу стать всем, если только захочу |
|
|||||
|
Сегодня всем пишу про BulkLoader
![]()
__________________
if (love is true) break my.heart; |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
А что дальше?
addChild через фреймворк? |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
спасибо, большое, вроде как получилось:
public class LoaderExample extends Sprite {
private var url:String;
private var mc:MovieClip;
private var i:int;
private var loader:Loader;
private var prevX:int;
public function LoaderExample() {
i=1;
prevX=0
;
url="ico/ico"+i+".jpg";
loader = new Loader();
mc = new MovieClip();
configureListeners(loader.contentLoaderInfo);
loader.addEventListener(MouseEvent.CLICK, clickHandler);
var request:URLRequest=new URLRequest(url);
loader.load(request);
mc.addChild(loader);
addChild(mc);
mc.alpha=1;
mc.x=prevX;
loader.unload();
}
private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
//dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
//dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
}
private function completeHandler(event:Event):void {
//trace("completeHandler: " + event);
if (i<3) {
i++;
url="ico/ico"+i+".jpg";
loader = new Loader();
mc = new MovieClip();
configureListeners(loader.contentLoaderInfo);
loader.addEventListener(MouseEvent.CLICK, clickHandler);
var request:URLRequest=new URLRequest(url);
loader.load(request);
mc.addChild(loader);
addChild(mc);
mc.alpha=1;
mc.x=prevX+100;
prevX=mc.x;
loader.unload();
}
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
//trace("httpStatusHandler: " + event);
}
и еще вопрос как мне твин сделать - появление картинок при загрузке а то я могу ток объявить один только и он естесствеено не успев осуществиться объявляется еще раз и картинки получаются с разной альфой Цитата:
Последний раз редактировалось AlexDesinger; 30.10.2008 в 01:20. |
|
|||||
|
>>картинки грузятся, все ок... меня только напрягает двойной код в главной функции и при событии complete это так и должно быть или можно как нть покрасивее написать?
и еще вопрос как мне твин сделать - появление картинок при загрузке а то я могу ток объявить один только и он естесствеено не успев осуществиться объявляется еще раз и картинки получаются с разной альфой package {
import flash.display.*;
import flash.events.*;
import flash.ui.Mouse;
import flash.text.*;
import flash.net.*;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
public class Doc extends Sprite {
var loader:Loader;
var req:URLRequest;
var count:int;
var position:int;
var path:String;
var arr:Array;
var sp:Sprite;
var tween:Tween;
var tr:Boolean;
var i:int;
function Doc() {
path = 'http://www.dnadillo.dn.ua/images/imag/';
arr = [
'magna_17_1024.jpg','magna_33_1024.jpg',
'magna_carta_078.JPG','magna_carta_115.JPG',
'magna_carta_126.JPG','magna_carta_127.JPG',
'magna_carta_131.JPG','magna_carta_133.JPG',
'magna_carta_140.JPG','magna_carta_141.JPG',
'magna_carta_144.JPG'
];
req = new URLRequest();
count = 0;
position = 0;
tr = false;
onward();
tween = new Tween({i:0}, "i", Regular.easeOut, 0, 1, 10, true);
tween.stop();
tween.addEventListener(TweenEvent.MOTION_CHANGE, handleChange);
tween.addEventListener(TweenEvent.MOTION_FINISH, fin);
}
function got(evt:Event) {
sp = new Sprite();
sp.addChild(loader);
addChild(sp);
sp.alpha = 0;
count++;
trace('комплект');
onward();
if (tr==false) {
tr = true;
tween.start();
}
}
function ioErrorHandler(event:IOErrorEvent):void {
count++;
trace('Ошибка');
onward();
}
function onward() {
if (count < arr.length) {
trace('Гружу');
loader=new Loader();
req.url=path + arr[count];
loader.load(req);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,got);
}
}
function handleChange(evt:TweenEvent):void {
//tween.obj.i;
for (i=0; i<this.numChildren; i++) {
if (i==position) {
sp = this.getChildAt(i) as Sprite;
trace(sp);
sp.alpha = tween.obj.i;
}
}
}
function fin(evt:TweenEvent):void {
position++;
tween.start();
trace('Конец');
}
}
}
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
Alex Lexcuk, спасибо за пример оч красиво...
Народ, у меня все получилось, даже с твином внешне все выглядет вроде ничего, но главная проблема сейчас для меня зпихнуть этот лоадер в отдельный класс... я делаю так: И собственно не понимаю почему, но картинки не отображаются...трэйсом выводится mc.x totalByte и т.д. но реально их не видно, а если закинуть код в главный класс, то все грузится как надо...подскажите |
|
|||||
|
Можно вынести легко код загрузщика в отдельный класс
package {
import flash.display.*;
import flash.events.*;
import flash.ui.Mouse;
import flash.text.*;
import flash.net.*;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
public class Doc extends Sprite {
var loader:FerryLoader;
var count:int;
var position:int;
var path:String;
var arr:Array;
var sp:Sprite;
var tween:Tween;
var tr:Boolean;
var i:int;
function Doc() {
path = 'http://www.dnadillo.dn.ua/images/imag/';
arr = [
'magna_17_1024.jpg','magna_33_1024.jpg',
'magna_carta_078.JPG','magna_carta_115.JPG',
'magna_carta_126.JPG','magna_carta_127.JPG',
'magna_carta_131.JPG','magna_carta_133.JPG',
'magna_carta_140.JPG','magna_carta_141.JPG',
'magna_carta_144.JPG'
];
count = 0;
position = 0;
tr = false;
loader = new FerryLoader(this);
loader.urlTrain(path+arr[count]);
tween = new Tween({i:0}, "i", Regular.easeOut, 0, 1, 10, true);
tween.stop();
tween.addEventListener(TweenEvent.MOTION_CHANGE, handleChange);
tween.addEventListener(TweenEvent.MOTION_FINISH, fin);
}
function onward() {
sp = this.getChildAt(this.numChildren-1) as Sprite;
sp.alpha = 0;
count++;
if (count < arr.length) {
loader.urlTrain(path+arr[count]);
if (tr==false) {
tr = true;
tween.start();
}
}
}
function handleChange(evt:TweenEvent):void {
//tween.obj.i;
for (i=0; i<this.numChildren; i++) {
if (i==position) {
sp = this.getChildAt(i) as Sprite;
trace(sp);
sp.alpha = tween.obj.i;
}
}
}
function fin(evt:TweenEvent):void {
position++;
tween.start();
trace('Конец');
}
}
}
package {
import flash.display.*;
import flash.events.*;
import flash.ui.Mouse;
import flash.text.*;
import flash.net.*;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
public class FerryLoader extends URLLoader {
var req:URLRequest;
var loader:Loader;
var doc:Doc;
var sp:Sprite;
function FerryLoader(_doc:Doc) {
doc=_doc;
req=new URLRequest();
dataFormat= URLLoaderDataFormat.BINARY;
addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
addEventListener(Event.COMPLETE,got);
}
function urlTrain(_str:String) {
req.url=_str;
try {
load(req);
} catch (error:Error) {
trace("Unable to load requested document.");
}
}
function got(evt:Event) {
loader = new Loader;
loader.loadBytes(this.data);
sp=new Sprite();
sp.addChild(loader);
doc.addChild(sp);
doc.onward();
}
function ioErrorHandler(event:IOErrorEvent):void {
trace('Ошибка');
doc.onward();
}
}
}
Последний раз редактировалось Alex Lexcuk; 30.10.2008 в 09:42. |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
ээх все равно не получается вынести не грузится и все ...объясните, пожалуйста принцип по которому это делается, т.е. есть ли общие принципы того, что должно остаться в главном коде а что можно вынести в отдельный код...и что и там и там дописать...или же нужно оснавательно учить as3 чтобы это понять?
на всякий случай напишу то что у меня сейчас есть Main.as Main.as
package {
import LoaderExample
......
public class Main extends MovieClip {
public function Main() {
var lp:LoaderExample= new LoaderExample()
............
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
import fl.transitions.Tween;
import fl.transitions.easing.*;
public class LoaderExample extends MovieClip {
private var url:String;
private var mc:MovieClip;
private var c:int;
private var loader:Loader;
private var prevvXX:int;
//private var twa:Tween;
public function LoaderExample() {
c=1;
prevvXX=0
;
url="ico/ico"+c+".jpg";
loader = new Loader();
mc = new MovieClip();
configureListeners(loader.contentLoaderInfo);
loader.addEventListener(MouseEvent.CLICK, clickHandler);
var request:URLRequest=new URLRequest(url);
loader.load(request);
mc.addChild(loader);
addChild(mc);
// mc.alpha=1
mc.x=prevvXX;
mc.y=100;
//twa=new Tween(mc,"alpha",Strong.easeOut,0,1,100,false);
loader.unload();
trace(mc.width)
}
private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(Event.INIT, initHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
//dispatcher.addEventListener(Event.UNLOAD, unLoadHandler);
}
private function completeHandler(event:Event):void {
//trace("completeHandler: " + event);
if (c<3) {
c++;
url="ico/ico"+c+".jpg";
loader = new Loader();
mc = new MovieClip();
configureListeners(loader.contentLoaderInfo);
loader.addEventListener(MouseEvent.CLICK, clickHandler);
var request:URLRequest=new URLRequest(url);
loader.load(request);
mc.addChild(loader);
addChild(mc);
mc.alpha=100;
mc.x=prevvXX+100;
mc.y=100;
prevvXX=mc.x;
loader.unload();
//twa=new Tween(mc,"alpha",Strong.easeOut,0,1,100,false);
}
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
//trace("httpStatusHandler: " + event);
}
private function initHandler(event:Event):void {
//trace("initHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void {
// trace("ioErrorHandler: " + event);
}
private function openHandler(event:Event):void {
//trace("openHandler: " + event);
}
private function progressHandler(event:ProgressEvent):void {
trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
}
private function unLoadHandler(event:Event):void {
//trace("unLoadHandler: " + event);
}
private function clickHandler(event:MouseEvent):void {
//trace("clickHandler: " + event);
// var loader:Loader=Loader(event.target);
}
}
}
Последний раз редактировалось AlexDesinger; 31.10.2008 в 01:51. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|