Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-10-2009, 17:21   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 6
resize handler mit zoom kombinieren

ich bin gerade dabei eine website zu erstellen in der ein browser-füllendes bild im hintergrund liegt.
das funktioniert mit dem resize handler soweit bestens.
jetzt soll das bild zoomen wie bei Travel:Japan A Photo Journal
dazu dachte ich baue ich einen timer ein der zoom und resize abfängt.
erstes problem: error meldung: class must not be nested
also habe ich die classe in ein .as sheet gepackt und importiert ...
es funktioniert aber immer noch nicht. hat jemand einen ansatz?

(ich weiß, es fliegen einige "import leichen" rum ...)

PHP-Code:

import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.RESIZE, resizeHandler);



import ShortTimer;

var time:ShortTimer = new ShortTimer;


/* class ShortTimer
{
var zoom;
public function ShortTimer()
{
// creates a new five-second Timer
var minuteTimer:Timer = new Timer(1000, 5);

// designates listeners for the interval and completion events
minuteTimer.addEventListener(TimerEvent.TIMER, onTick);
minuteTimer.addEventListener(TimerEvent.TIMER_COMP LETE, onTimerComplete);

// starts the timer ticking
minuteTimer.start();
zoom = 1;
}
*/
function onTick(event:TimerEvent):void
{
// displays the tick count so far
// The target of this event is the Timer instance itself.
zoom = zoom+1;

trace("tick " + event.target.currentCount);
}

function onTimerComplete(event:TimerEvent):void
{
trace("Time's Up!");
}

//function to handle background image resize.
function setBackground() {
var reg2 = stage.stageWidth / 2;
var reg1 = stage.stageHeight / 2;
bg_mc.x = reg2;
bg_mc.y = reg1;
bg_mc.width = stage.stageWidth*zoom;
bg_mc.height = stage.stageHeight*zoom;
bg_mc.scaleX <= bg_mc.scaleY ? (bg_mc.scaleX = bg_mc.scaleY) : (bg_mc.scaleY = bg_mc.scaleX);
}


//set position when stage resizes
function resizeHandler(event:Event):void {
setBackground();

}
darkside303 ist offline   Mit Zitat antworten
Alt 17-10-2009, 12:22   #2 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 14
hallo darkside303,

vielleicht habe ich Dein Problem noch nicht ganz verstanden
Zitat:
ich bin gerade dabei eine website zu erstellen in der ein browser-füllendes bild im hintergrund liegt.
das funktioniert mit dem resize handler soweit bestens.
jetzt soll das bild zoomen wie bei Travel:Japan A Photo Journal
dazu dachte ich baue ich einen timer ein der zoom und resize abfängt.
Vielleicht gehst Du ja so vor:
1. Du erzeugst eine Klasse, die Dein Hintergrundbild abruft, darstellt und ggf. maskiert. und fügst ein entsprechendes DisplayObject der DisplayList hinzu.
2. in dieser Klasse wird dafür gesorgt, dass Dein Bild (mittels Timer) entsprechend Animiert wird. Hier auch tauschen des Bildes etc.
3. in deiner Dokumentenklasse wird durch einen EventHandler die Größe des Hintergrundbildes z.B. mittels scaleX u. scaleY angepasst.

habe ich das so richtig verstanden?

Grüße Holger
aceMa ist offline   Mit Zitat antworten
Alt 18-10-2009, 10:36   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 6
hallo holger,
hab 2 tage flachgelegen und bin jetzt wieder am start ...
ja das hast du in jedem punkt richtig verstanden.

ich weiß jetzt nicht genau wo ich mit "aufräumen" des sripts anfangen soll ...

grüße, alex
darkside303 ist offline   Mit Zitat antworten
Alt 18-10-2009, 21:22   #4 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 14
Hi,
zunächst funktioniert wahrscheinlich Dein Import nicht (Fehlermeldung?)
Stattdessen reicht es die Klasse in Deinem Klassenpfad zu platzieren und ein Objekt zu erzeugen.

PHP-Code:
var time:ShortTimer = new ShortTimer(); 
Ich würde Dir aber vorschlagen, das Ganze etwas anders aufzubauen:

Erstmal ganz einfach und auf die Schnelle. Du wirst darauf aufbauen.
Die Dokumentenklasse:
PHP-Code:
/**
* @author   de.frankly.hm <mailTo: h.manthey(at)alice-dsl.net>
* @version 001
* @copyright 
* @see
* @todo
*/
package yourPathToClasses.hm{
    
import flash.display.*;
    
import flash.events.*;
    
import flash.net.*;
    
import flash.text.*;
    
//import fl.events.*;
    
    
    /**
    * Die Dokumentenklasse unseres Projekts, sie ist mit dem *.fla verknüpft.
    * @param
    * @return
    * @see
    * @todo 
    */
    
public class MovingBackgroundDocumentClass extends MovieClip{
        var 
HG:MovingBackgroundSprite;
        
        
/**
        * der Konstruktor der Klasse
        * @param
        * @return
        * @see
        * @todo 
        */
        
public function MovingBackgroundDocumentClass():void{
            
stage.scaleMode StageScaleMode.NO_SCALE;
            
stage.align StageAlign.TOP_LEFT;
            
stage.addEventListener(Event.RESIZEresizeHandler);
            
//neuen Background erstellen
            
            
            
HG = new MovingBackgroundSprite("yourBGimg.jpg"stage.stageWidthstage.stageHeight100);
            
addChild(HG);
        }
        
        
/**
        * der EventHandler, der das Anpassen an die neue Bühnengröße erwirkt
        * @param e:Event
        * @return
        * @see
        * @todo 
        */
        
private function resizeHandler(e:Event){
            
//von hier aus alle DisplayObjekte zum anpassen bewegen
            
HG.updateFit(stage.stageWidthstage.stageHeight);
            
            
        }
        
    }
//ende Klasse
}//ende Package 

und das Hintergrundobjekt:
PHP-Code:
/**
* @author   de.frankly.hm <mailTo: h.manthey(at)alice-dsl.net>
* @version 
* @copyright 
* @see
* @todo
*/
package yourPathToClasses.hm{
    
import flash.display.*;
    
import flash.events.*;
    
import flash.net.*;
    
import flash.utils.Timer;
    
    
/**
    * Die Dokumentenklasse unseres Projekts, sie ist mit dem *.fla verknüpft.
    * @param
    * @return
    * @see
    * @todo 
    */
    
public class MovingBackgroundSprite extends Sprite{
        var 
imgLoader:Loader = new Loader();  //LoaderObjekt zum Laden des Bildes
        
var myMask:Shape = new Shape(); //Shape-Objekt, das als Maske dienen soll
        
var myCont:Sprite = new Sprite(); //Sprite, der das Bild aufnimmt
        
var w:uint;
        var 
h:uint;
        var 
delay:int;
        var 
moveTimer:Timer;
        
//var deltaX:Number=1; //ein Anfangswert für die Bewegung
        //var deltaY:Number=-0.5;

        /**
        * der Konstruktor der Klasse
        * @param IMG:String -> URL des zu ladenden Bildes, W:uint -> Anfangsbreite, H:uint -> Anfangshöhe
        * @return
        * @see
        * @todo 
        */
        
public function MovingBackgroundSprite(IMG:String,W:uint,H:uintTimerDelay:int):void{
            
trace(IMG,W,H);
            
w=W;
            
h=H;
            
delay=TimerDelay;
            
//Bild Laden
            
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETEimgLoaderCompleteListener);
            
imgLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERRORimLoaderIOErrorListener);
            
//imgLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imgLoaderProgressListener);
            
try{
                
imgLoader.load(new URLRequest(IMG))
            } catch(
e:ErrorEvent){
                
trace("Fehler");
            }
//
            //Maske erstellen
            /*myMask.graphics.beginFill(0x000000);
            myMask.graphics.drawRect(0,0,w,h);
            myMask.graphics.endFill();
            this.addChild(myMask);
            this.mask = myMask;*/
            
            
moveTimer = new Timer(delay0);
            
moveTimer.addEventListener(TimerEvent.TIMERnewPosOfImgListener);
            
            
this.addEventListener(Event.REMOVEDremovedEventListener);
            
this.addEventListener(Event.ADDED_TO_STAGEadded_to_stageEventListener);
        }
        
        private function 
imgLoaderCompleteListener(e:Event){
            
trace("complete");
            
e.target.content.smoothing true;
            
addChild(imgLoader);
            
imgLoader.= (w-imgLoader.width)/2;
            
imgLoader.= (h-imgLoader.height)/2;
        }
            
        private function 
imLoaderIOErrorListener(e:IOErrorEvent){
            
//Etwas sinnvolles mit einem IOError anfangen
            
trace(e);
        }
        
        private function 
imgLoaderProgressListener(e:Event){
            
//Etwas mit dem Ladefortschritt anfangen
        
}
        
        private function 
removedEventListener(e:Event){
            
//stopAnimation
            
this.removeEventListener(Event.ENTER_FRAMEnewPosOfImgListener)
        }
        
        private function 
added_to_stageEventListener(e:Event){
            
//startAnimation
            
moveTimer.start();
        }
        
        private function 
newPosOfImgListener(e:Event){
            
//hier etwas elegantes mit dem Bild anstellen
            
        
}
        
        
/**
        * der EventHandler, der das Anpassen an die neue Bühnengröße erwirkt
        * @param e:Event
        * @return
        * @see
        * @todo 
        */
        
public function updateFit(W:uint,H:uint){
            
//hier neue Position und Größe für HG ;
            
        
}
        
    }
//ende Klasse
}//ende Package 
aceMa ist offline   Mit Zitat antworten
Alt 19-10-2009, 14:17   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 6
hi,
2 kleine fragen (bin recht neu in oop)

1. brauche ich eine MovingBackgroundDocumentClass.as datei, oder wird die im script komplett ausgeführt?

2. package yourPathToClasses.hm{
verstehe ich nicht ganz, in der doku sind die meisten beispiele ohne pfad ...

tausend dank und grüße,
alex
darkside303 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
browser-fit, resize-handler, zoom

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
http://razghul.ice.org/misc/zoom/zoom.htm Blax_ed Coolsites 10 13-03-2007 08:01
Problem mit zoom in/ zoom out animation califaxe Flash MX 2 23-09-2004 19:55
Clip Handler Script nach Button Handler Script 409coffeemaker ActionScript 1 2 26-03-2004 08:46
Mc mit zoom in Hauptfilm laden Zoom funktioniert dann nicht mehr Rullemann Flash 4 und Flash 5 5 30-10-2002 13:33
on-Handler- was ist das? tacoden Flash 4 und Flash 5 1 18-09-2002 09:44


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele