| Neuer User
Registriert seit: Apr 2009 Ort: Bayern
Beiträge: 107
| Zitat:
Zitat von thomas_E Es ist ein Fehler, beseitigen wär eine möglichkeit.
kann es sein, dass du im Konstruktor der externen swf-datei auf stage zugreifst?
ansonsten:
- AS2 oder AS3?
- code in der Timeline oder in externen Klassen?
- sonst irgendelche Tips, wie dein Code aussehen könnte? | AS3 und Code in der Timline
Danke für deine Hilfe..
Gruß
Stefan PHP-Code: import flash.display.*;
import flash.text.*;
import flash.events.*;
import flash.ui.*;
import flash.net.*;
import flash.xml.*;
import flash.utils.*;
import flash.geom.*;
import caurina.transitions.Tweener;
import gs.*;
import gs.easing.*;
const XML_URL:String="children/xml/setup.xml";
var images_folder:String;
var objs_array:Array=new Array();
var items_array:Array=new Array();
var image_bg_mc:MovieClip;
var bitmap:Bitmap;
var apple_mc:Apple;
var images_mc:Images;
var arrow_right:Arrow;
var arrow_left:Arrow;
var counter:int=0;
var ratio:Number=0;
var percentage:Number=0;
var current_id:int=0;
var test:MovieClip;
test = new rechts();
var test1:MovieClip;
test1 = new links();
stage.frameRate=60;
hideMenu();
showXMLPreloader();
loadXML();
// zeige preloder vor dem laden der xml
function showXMLPreloader():void
{
apple_mc=new Apple();
apple_mc.x=stage.stageWidth/2+128;
apple_mc.y=stage.stageHeight/2-150;
addChild(apple_mc);
}
// XML preloader verschwinden lassen
function hideXMLPreloader():void
{
apple_mc.stop();
removeChild(apple_mc);
}
// zeige preloder vor dem laden des Bildes
function showImagePreloader():void
{
apple_mc=new Apple();
apple_mc.x=stage.stageWidth/2+128;
apple_mc.y=stage.stageHeight/2-150;
addChild(apple_mc);
}
// XML preloader verschwinden lassen
function hideImagePreloader():void
{
apple_mc.stop();
removeChild(apple_mc);
}
// laden externes XML
function loadXML():void
{
var loader:URLLoader=new URLLoader();
loader.addEventListener(Event.COMPLETE,completeXMLHandler);
var request:URLRequest=new URLRequest(XML_URL);
try
{
loader.load(request);
}
catch(error:Error)
{
trace('Impossible to load request document.');
}
}
// pushes XML Daten in Array
function completeXMLHandler(event:Event):void
{
var loader:URLLoader=URLLoader(event.target);
var result:XML=new XML(loader.data);
var myXML:XMLDocument=new XMLDocument();
myXML.ignoreWhite=true;
myXML.parseXML(result.toXMLString());
var node:XMLNode=myXML.firstChild;
images_folder=node.attributes["imagesFolder"];
var items:int=int(node.childNodes.length);
for(var i:int=0;i<items;i++)
{
var obj:Object=new Object();
var subitems:int=int(node.childNodes[i].childNodes.length);
for(var j:int=0;j<subitems;j++)
{
switch(j)
{
case 0:
if(node.childNodes[i].childNodes[j].firstChild!=null)
obj.path=node.childNodes[i].childNodes[j].firstChild.nodeValue;
else
obj.path="";
break;
case 1:
if(node.childNodes[i].childNodes[j].firstChild!=null)
obj.title=node.childNodes[i].childNodes[j].firstChild.nodeValue;
else
obj.title="";
break;
case 2:
if(node.childNodes[i].childNodes[j].firstChild!=null)
obj.date=node.childNodes[i].childNodes[j].firstChild.nodeValue;
else
obj.date="";
break;
}
}
objs_array.push(obj);
}
percentage=100/objs_array.length;
createThumbs();
}
// Erzeugen des Menu Scroller
function createMenu():void
{
images_mc=new Images();
images_mc.y=-images_mc.height+25;
images_mc.bg_mc.width=stage.stageWidth;
images_mc.button_mc.x=stage.stageWidth/2+100;
addChild(images_mc);
images_mc.addEventListener(Event.ENTER_FRAME,checkMouse);
}
// Check mouseposition ( öffnen/schließen images scroller )
function checkMouse(evt:Event):void
{
var d:Number=mouseY;
if(d<200)
Tweener.addTween(evt.target,{y:0,time:1,transition:"regular"});
else
Tweener.addTween(evt.target,{y:-images_mc.height+25,time:1,transition:"regular"});
}
// erzeugen und laden der thumbs
function createThumbs():void
{
for(var i:int=0;i<objs_array.length;i++)
{
var request:URLRequest=new URLRequest(images_folder+"/thumbs/"+objs_array[i].path);
var loader:Loader=new Loader();
loader.name=i.toString();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onThumbComplete);
loader.load(request);
}
}
// wen Thumbs geladen sind...
function onThumbComplete(evt:Event):void
{
var i:int=int(evt.target.loader.name);
var thumb:Bitmap=evt.target.loader.content as Bitmap;
thumb.smoothing=true;
if(thumb.width>thumb.height)
{
var item_v:ItemV=new ItemV();
items_array[i]=item_v;
item_v.image_mc.empty_mc.addChild(thumb);
}
else
{
var item_h:ItemH=new ItemH();
items_array[i]=item_h;
item_h.image_mc.empty_mc.addChild(thumb);
}
items_array[i].id=i;
items_array[i].sel=false;
//items_array[i].header_mc.title_txt.text=objs_array[i].title;
items_array[i].date_txt.text=objs_array[i].date;
// items_array[i].desc_txt.text=(i+1).toString();
counter++;
if(counter==objs_array.length)
{
createMenu();
fixItems();
}
apple_mc.info_txt.htmlText="<b>"+Math.floor(percentage*counter)+" %"+"</b>";
}
// position the thumbs
function fixItems():void
{
var l:Number=0;
for(var i:int=0;i<items_array.length;i++)
{
l+=items_array[i].width;
images_mc.empty_mc.addChild(items_array[i]);
if(i==0)
items_array[i].x=250;
if(i>0)
items_array[i].x=items_array[i-1].x+items_array[i-1].width;
items_array[i].mouseChildren=false;
items_array[i].buttonMode=true;
items_array[i].addEventListener(MouseEvent.MOUSE_OVER,onItemOver);
items_array[i].addEventListener(MouseEvent.MOUSE_OUT,onItemOut);
items_array[i].addEventListener(MouseEvent.MOUSE_DOWN,onItemDown);
}
images_mc.empty_mc.graphics.beginFill(0x0,0);
images_mc.empty_mc.graphics.drawRect(0,0,l+500,100);
ratio=(images_mc.empty_mc.width-stage.stageWidth)/stage.stageWidth;
images_mc.empty_mc.addEventListener(Event.ENTER_FRAME,moveItems);
hideXMLPreloader();
loadImage();
checkThumbState(0);
}
// wenn mouse über einem thumb ist
function onItemOver(evt:MouseEvent):void
{
Tweener.addTween(evt.target.bg_mc,{_color:0xd2d4bf,time:1,transition:"regular"});
Tweener.addTween(evt.target.date_txt,{_color:0x222d3f,time:1,transition:"regular"});
Tweener.addTween(evt.target.image_mc.bg_mc,{_color:0xFFFFFF,time:1,transition:"regular"});
}
// mouse außerhalb des thumbs
function onItemOut(evt:MouseEvent):void
{
if(!evt.target.sel)
{
Tweener.addTween(evt.target.bg_mc,{_color:0x0,time:1,transition:"regular"});
Tweener.addTween(evt.target.date_txt,{_color:0xd2d4bf,time:1,transition:"regular"});
Tweener.addTween(evt.target.image_mc.bg_mc,{_color:0x303030,time:1,transition:"regular"});
}
}
// mouse click thumb
function onItemDown(evt:MouseEvent):void
{
current_id=evt.target.id;
checkThumbState(evt.target.id);
loadImage();
}
// wechselt den State vom current clicked thumb
function checkThumbState(n:int):void
{
for(var i:int=0;i<items_array.length;i++)
{
if(i==n)
{
items_array[i].mouseEnabled=false;
items_array[i].sel=true;
Tweener.addTween(items_array[i].bg_mc,{_color:0xd2d4bf,time:1,transition:"regular"});
Tweener.addTween(items_array[i].date_txt,{_color:0x222d3f,time:1,transition:"regular"});
Tweener.addTween(items_array[i].image_mc.bg_mc,{_color:0xd2d4bf,time:1,transition:"regular"});
}
else
{
items_array[i].sel=false;
items_array[i].mouseEnabled=true;
Tweener.addTween(items_array[i].bg_mc,{_color:0x0,time:1,transition:"regular"});
Tweener.addTween(items_array[i].date_txt,{_color:0xd2d4bf,time:1,transition:"regular"});
Tweener.addTween(items_array[i].image_mc.bg_mc,{_color:0x303030,time:1,transition:"regular"});
}
}
}
// bewegen in Abhängikeit der mouse position
function moveItems(evt:Event):void
{
var centerX:Number=stage.stageWidth/2-mouseX;
evt.target.x+=centerX/18;
if(evt.target.x>=0)
evt.target.x=0;
if(evt.target.x<-evt.target.width+stage.stageWidth)
evt.target.x=-evt.target.width+stage.stageWidth;
}
// laden selected image
function loadImage():void
{
if(image_bg_mc!=null)
{
removeChild(image_bg_mc);
removeChild(bitmap);
//hideDescription();
if(arrow_right!=null)
removeChild(arrow_right);
if(arrow_left!=null)
removeChild(arrow_left);
if(test!=null)
removeChild(test);
if(test1!=null)
removeChild(test1);
}
disableThumbs();
showImagePreloader();
var request:URLRequest=new URLRequest(images_folder+"/"+objs_array[current_id].path);
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onImageProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onImageComplete);
loader.load(request);
}
function onImageProgress(evt:ProgressEvent):void
{
var perc:uint=(evt.bytesLoaded/evt.bytesTotal)*100;
apple_mc.info_txt.htmlText="<b>"+perc+" %"+"</b>";
}
// wen Bild geladen ist
function onImageComplete(evt:Event):void
{
hideImagePreloader();
bitmap=evt.target.loader.content as Bitmap;
bitmap.smoothing=true;
bitmap.alpha=0;
bitmap.x=stage.stageWidth/2-bitmap.width/2+128;
bitmap.y=stage.stageHeight/2-bitmap.height/2-150;
image_bg_mc=new MovieClip();
image_bg_mc.graphics.beginFill(0x1E1E1E,1);
image_bg_mc.graphics.drawRect(-1,-1,2,2);
image_bg_mc.x=stage.stageWidth/2+128;
image_bg_mc.y=stage.stageHeight/2-150;
addChild(image_bg_mc);
swapChildren(images_mc,image_bg_mc);
Tweener.addTween(image_bg_mc,{width:bitmap.width+4,height:bitmap.height+4,time:.8,transition:"easeOutQuint",onComplete:attachBitmap});
function attachBitmap():void
{
addChild(bitmap);
swapChildren(images_mc,bitmap);
Tweener.addTween(bitmap,{alpha:1,time:0.1,transition:"easeOutSine"});
showRightArrow();
showLeftArrow();
enableThumbs();
}
}
// ausschalten mouse actions thumbs
function disableThumbs():void
{
for(var i:int=0;i<images_mc.empty_mc.numChildren;i++)
{
var thumb_mc:MovieClip=images_mc.empty_mc.getChildAt(i) as MovieClip;
thumb_mc.mouseEnabled=false;
}
}
// einschalten mouse actions thumbs
function enableThumbs():void
{
for(var i:int=0;i<images_mc.empty_mc.numChildren;i++)
{
if(i!=current_id)
{
var thumb_mc:MovieClip=images_mc.empty_mc.getChildAt(i) as MovieClip;
thumb_mc.mouseEnabled=true;
}
}
}
// zeige right arrow
function showRightArrow():void
{
arrow_right=new Arrow();
arrow_right.alpha=0;
arrow_right.x = bitmap.x+arrow_right.width+bitmap.width/2-1;
arrow_right.y=bitmap.y;
trace(arrow_right.x);
arrow_right.width=bitmap.width/2;
arrow_right.height=bitmap.height;
addChild(test);
addChild(arrow_right);
swapChildren(images_mc,arrow_right);
swapChildren(arrow_right,test);
test.alpha=0;
arrow_right.mouseChildren=false;
arrow_right.buttonMode=true;
arrow_right.addEventListener(MouseEvent.MOUSE_DOWN,onArrowDown);
arrow_right.addEventListener(MouseEvent.MOUSE_OVER,onArrowDownEffekt);
function onArrowDownEffekt(evt:MouseEvent):void
{
Tweener.addTween(arrow_right,{alpha:0,time:0.4,transition:"easeInOutQuint"});
}
arrow_right.addEventListener(MouseEvent.MOUSE_OUT,outArrowDownEffekt);
function outArrowDownEffekt(evt:MouseEvent):void
{
Tweener.addTween(arrow_right,{alpha:0,time:0.4,transition:"easeInOutQuint"});
}
test.x=bitmap.x+bitmap.width-test.width;
test.y=bitmap.y+150;
arrow_right.addEventListener(Event.ENTER_FRAME,controlMouse1);
function controlMouse1(e:Event):void
{
if(arrow_right.hitTestPoint(mouseX,mouseY,true))
Tweener.addTween(test,{alpha:0.4,time:0.4,transition:"easeOutCubic"});
else
Tweener.addTween(test,{alpha:0,time:0.7,transition:"easeOutCubic"});
}
}
// zeige left arrow
function showLeftArrow():void
{
arrow_left=new Arrow();
arrow_left.rotation=180;
arrow_left.alpha=0;
arrow_left.x = bitmap.x+arrow_left.width+bitmap.width/2-1;
arrow_left.y=bitmap.y+bitmap.height;
arrow_left.width=bitmap.width/2;
arrow_left.height=bitmap.height+arrow_left.height;
addChild(test1);
swapChildren(arrow_right,test1);
addChild(arrow_left);
swapChildren(images_mc,arrow_left);
test1.alpha = 0;
arrow_left.buttonMode=true;
arrow_left.mouseChildren=false;
arrow_left.buttonMode=true;
arrow_left.addEventListener(MouseEvent.MOUSE_DOWN,onArrowDown);
arrow_left.addEventListener(MouseEvent.MOUSE_OVER,onArrowDownEffekt1);
function onArrowDownEffekt1(evt:MouseEvent):void
{
Tweener.addTween(arrow_left,{alpha:0,time:0.4,transition:"easeInOutQuint"});
}
arrow_left.addEventListener(MouseEvent.MOUSE_OUT,outArrowDownEffekt1);
function outArrowDownEffekt1(evt:MouseEvent):void
{
Tweener.addTween(arrow_left,{alpha:0,time:0.4,transition:"easeInOutQuint"});
}
test1.x=bitmap.x;
test1.y=bitmap.y+150;
arrow_left.addEventListener(Event.ENTER_FRAME,controlMouse);
function controlMouse(e:Event):void
{
if(arrow_left.hitTestPoint(mouseX,mouseY,true))
Tweener.addTween(test1,{alpha:0.4,time:0.4,transition:"easeOutCubic"});
else
Tweener.addTween(test1,{alpha:0,time:0.7,transition:"easeOutCubic"});
}
}
// wenn ein arrow angeclicked wurde
function onArrowDown(evt:MouseEvent):void
{
switch(evt.target)
{
case arrow_right:
current_id++;
break;
case arrow_left:
current_id--;
break;
}
var l:int=objs_array.length-1;
if(current_id<0)
current_id=l;
if(current_id>l)
current_id=0;
loadImage();
checkThumbState(current_id);
}
function hideMenu():void
{
var label:String="SL-PHOTOGRAFIE";
var cm:ContextMenu=new ContextMenu();
var item:ContextMenuItem=new ContextMenuItem(label);
cm.hideBuiltInItems();
cm.customItems.push(item);
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,itemHandler1);
this.contextMenu=cm;
}
function itemHandler1(event:ContextMenuEvent):void
{
var request:URLRequest=new URLRequest();
request.url="mailto:mailto@sl-photografie.de";
navigateToURL(request,"_self");
}
Geändert von Stefan° (26-09-2010 um 16:20 Uhr)
|