Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash CS4 Professional

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-02-2011, 15:25   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 101
interaktive Steuerung eines Illustrations-Teils ?

Hallo,

ich möchte gerne folgendes in Flash CS4 realisieren:
eine Figur leuchtet mit einer Taschenlampe von der Bildmitte Richtung Navigationsleiste links. (das habe ich als 3D-Illustration vorliegen).

Nun wird es schwierig:
der Strahl der Taschenlampe soll dem Cursor immer zum jeweiligen Navigationspunkt folgen und beim Anklicken eines Navi-Punktes sich automatisch wieder von der Navi-Leiste entfernen.

Den Strahl der Taschenlampe könnte ich u.U. als halbtransparentes PNG anfertigen.

Aber wie steuert man das ganze per AS?
Ein "Mouse Trailer Effect" oder "Drag Movie" scheint das ja nicht zu sein.

Ich habe auch schon bei einschlägigen Portalen geschaut, wo fertige Komponenten verkauft werden (das wäre mir am liebsten, da ich nicht sehr fit im anfertigen komplexer AS-Codes bin) habe dort aber nichts gefunden, das mir grob die Richtung zeigen könnte.

Kann mir hier jemand einen Tipp geben, nach was für einer Methode ich da suchen muss - oder natürlich besser: was die Lösung ist?

Vielleicht lässt sich der Strahl ja auch in Flash selbst mit Partikeln herstellen?
(oder geht das nur ab Flash CS5?)
rutschmann ist offline   Mit Zitat antworten
Alt 21-02-2011, 16:23   #2 (permalink)
I'M A CYBORG
 
Registriert seit: Apr 2007
Ort: ---------
Beiträge: 372
das wäre mal grob die richtung .
es ginge aber auch mit noch weniger AS
angelehnt an dieses übungs beispiel
könntest du die tweens im light mc auf der zeitleiste machen
und dann im listener auf den gewnschten frame springen.

PHP-Code:
/*
du brauchst einen Moviclip in den du den lichtstrahl zeichnest.
der reg.punkt muss rechts mitte sein.
der instanzname muss light heisssen.
den ziehst du dann in mitte rechts der bühne.
und 5 buttons der instanzname ist b1 - b5;
und dieses script im 1. und einzigen frame.
*/

import fl.transitions.*;
import fl.transitions.easing.*;
var 
fmTween:Tween;

light.width=0//weite des mc beim start zurück 

function mm(evt:MouseEvent)
{
    var 
ix:Number light.mouseX;
    var 
iy:Number light.mouseY;
    
    
//var ix:Number = light.x - Button(evt.target).x;
    //var iy:Number = light.y - Button(evt.target).y;
    
    
var rad:Number Math.atan2(iy,ix);
    var 
rota:Number rad/Math.PI*180;
    
    
light.rotation rota// winkel zu mouse oder button
    
    //fmTween = new Tween(light,"rotation",Strong.easeOut,light.rotation, rota),30,false); // kann gemeinsam mit enterframe listener verwendet werden macht softe mausvervolgung
    
    
fmTween = new Tween(light,"width",Strong.easeOut,0,ix+50,120,false);
}

    
//addEventListener(Event.ENTER_FRAME,mm);    

    
b1.addEventListener(MouseEvent.CLICK,mcl);
    
b2.addEventListener(MouseEvent.CLICK,mcl);
    
b3.addEventListener(MouseEvent.CLICK,mcl);
    
b4.addEventListener(MouseEvent.CLICK,mcl);
    
b5.addEventListener(MouseEvent.CLICK,mcl);
    
    
b1.addEventListener(MouseEvent.ROLL_OVER,mm);
    
b2.addEventListener(MouseEvent.ROLL_OVER,mm);
    
b3.addEventListener(MouseEvent.ROLL_OVER,mm);
    
b4.addEventListener(MouseEvent.ROLL_OVER,mm);
    
b5.addEventListener(MouseEvent.ROLL_OVER,mm);
    

function 
mcl(evt:MouseEvent)
{
    
//light.width = 0;
    
fmTween.yoyo();
    
//removeEventListener(Event.ENTER_FRAME,mm);
    //fmTween = new Tween(light,"width",Strong.easeOut,light.width,0,15,false);

mfg
Angehängte Dateien
Dateityp: fla Twilight.fla (916,5 KB, 3x aufgerufen)
speedhost ist offline   Mit Zitat antworten
Alt 21-02-2011, 16:50   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 101
Hallo speedhost,

das ist ja sensationell –*ich hatte schon gedacht, es findet niemand eine Lösung.

Dein Beispiel funktioniert ja relativ gut und erfüllt fast meine Zwecke.

Tausend Dank erst mal für deine Mühe!

Eine Frage hätte ich allerdings noch, wenn du gestattest:
ist es auch möglich, den Lichtstrahl so zu programmieren, dass er beim Wechsel der Maus von Button zu Button nicht immer wieder zurück in die Ausgangssituation geht, sondern "ausgefahren" bleibt und dem Cursor nach oben oder unten folgt?
rutschmann ist offline   Mit Zitat antworten
Alt 22-02-2011, 16:08   #4 (permalink)
I'M A CYBORG
 
Registriert seit: Apr 2007
Ort: ---------
Beiträge: 372
danke für die lorbeeren.
ich finde es auch echt toll das man in flash schon mit ein paar anweisungen
schnell und einfach beachtliche ergebnisse erzielt. jeder soll flash und as können das ist gut fürs web und gut für alle flasher ...
PHP-Code:
/////// MAUS-VERFOLGER-VARIANTE //////
/* 
du brauchst einen Moviclip in den du den lichtstrahl zeichnest.
der reg.punkt muss rechts mitte sein.
der instanzname muss light heisssen.
den ziehst du dann in mitte rechts der bühne.
und 5 buttons der instanzname ist b1 - b5;
und dieses script im 1. und einzigen frame.
*/

import fl.transitions.*;
import fl.transitions.easing.*;


var 
fmTween:Tween;
// folgende optionen bei bedarf einschalten  zb problem mit ebenen od buttons. am besten einfach mal testen
//light.enabled = false;
//light.mouseEnabled = false;
//light.mouseChildren = false;

light.width=0//weite des mc beim start zurück 


    
stage.addEventListener(MouseEvent.MOUSE_MOVE,mm); 
    
    
b1.addEventListener(MouseEvent.CLICK,mcl);
    
b2.addEventListener(MouseEvent.CLICK,mcl);
    
b3.addEventListener(MouseEvent.CLICK,mcl);
    
b4.addEventListener(MouseEvent.CLICK,mcl);
    
b5.addEventListener(MouseEvent.CLICK,mcl);
    
    
b1.addEventListener(MouseEvent.ROLL_OUT,mmu);
    
b2.addEventListener(MouseEvent.ROLL_OUT,mmu);
    
b3.addEventListener(MouseEvent.ROLL_OUT,mmu);
    
b4.addEventListener(MouseEvent.ROLL_OUT,mmu);
    
b5.addEventListener(MouseEvent.ROLL_OUT,mmu);
    
function 
mm(evt:MouseEvent)
{
    var 
ix:Number light.mouseX
    var 
iy:Number light.mouseY;
    
    
//var ix:Number = light.x - Button(evt.target).x;
    //var iy:Number = light.y - Button(evt.target).y;
    
    
var rad:Number Math.atan2(iy,ix);
    var 
rota:Number rad/Math.PI*180;
    
    
//light.rotation = rota; // winkel zu mouse oder button
    
    
fmTween = new Tween(light,"rotation",Strong.easeOut,light.rotationrota,30,false);     
    
fmTween = new Tween(light,"width",Strong.easeOut,light.width,ix+50,30,false);
}

  

function 
mcl(evt:MouseEvent)
{
    
stage.removeEventListener(MouseEvent.MOUSE_MOVE,mm);//nach klick licht ausschalten
    
fmTween = new Tween(light,"width",Strong.easeOut,light.width,0,60,false);
}

function 
mmu(evt:MouseEvent)
{
    if(!
stage.hasEventListener(MouseEvent.MOUSE_MOVE))//wenn button  gklickt dann..
          
{
             
stage.addEventListener(MouseEvent.MOUSE_MOVE,mm); //..bei verlassen des buttons licht einschalten
         
}

mfg
speedhost ist offline   Mit Zitat antworten
Alt 22-02-2011, 19:22   #5 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Ort: Stuttgart
Beiträge: 101
Stark - das ist genau so, wie ich es mir gewünscht habe!

Ich muss dir meine größte Anerkennung für diese Lösung, vor allem aber für deine AS-Kenntnisse zum Ausdruck bringen.

"mit den paar anweisungen" in AS war ich selbst leider bereits vollkommen überfordert.
So eine Lösung ist sicher die Stärke von Flash, welches ja in den Augen vieler gerade ziemlich auf der Abschussliste steht (zugunsten von HTML5).
Ich hatte erst erwogen, die Animation des Strahls wie den Rest auch als 3D-Animation in verschiedenen Varianten zu realisieren und dann auf den Clips unterschiedliche Punkte der Timeline anzusteuern, je nach Mausbewegung.

Aber deine Lösung ist nun Tausend mal besser und rechtfertigt den Einsatz von Flash in jeder Hinsicht.

Tausend Dank also erst mal!

Ich melde mich hier nochmal, wenn das gesamte Projekt über die Bühne ist (der Strahl ist nur ein sehr kleiner Teil davon.)
rutschmann ist offline   Mit Zitat antworten
Alt 23-02-2011, 18:05   #6 (permalink)
I'M A CYBORG
 
Registriert seit: Apr 2007
Ort: ---------
Beiträge: 372
ist ja prima wenns so passt.
dann wünsche ich noch viel erfolg für dein projekt.

mfg
speedhost ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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
Wiederholung eines Teils mit AS3 sejau ActionScript 3 4 27-10-2008 12:56
Farbe eines Teils eines MCs ändern Hasch2o ActionScript 1 3 18-03-2007 19:48
Wiederholen eines bestimmten teils der Zeitleiste AnnuitCoeptis Flash MX 3 16-05-2005 20:46
Steuerung eines Mcs Manuelito ActionScript 1 4 04-12-2004 01:21
teils einfach, teils dynamisch verschachtelt = was geht?? leika ActionScript 1 2 29-08-2004 14:37


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele