Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-09-2004, 16:55   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
[TUTORIAL] Flash, PHP, MySQL Basics

Hi,

ich möchte hier ein paar Tutorials veröffentlichen… nichts besonderes, die meisten hier können das garantiert schon und wahrscheinlich viel besser… aber wenn es jemand gebrauchen kann… ist bestimmt für Anfänger recht interessant.

Im Tutorialbereich hatte ich leider keine Schreibrechte… kann ja verschoben werden, wenn es für sinnvoll gehalten wird.

Die ganzen PHP, SQL, Flash Sources gibt es hier.

Original sind die Tutorials bei Macuser.de veröffentlicht worden…


Here we go…

Hi,

ich hab mir mal Gedanken über einen effektiveren Preloader gemacht. Immer 3 Frames dafür zu nutzen finde ich doof. Jetzt geht es mir nur einem, indem man den onEnterFrame Handler und eine Funktion nutzt.

Das ganze sieht dann sehr simpel so aus

PHP-Code:
//Actionscript 1.0
this.onEnterFrame=function()
    {
    var 
current=_root.getBytesLoaded();
    var 
total=_root.getBytesTotal();
    var 
percent=Math.round((current/total)*100);
    if(
current>=total
        {
        
this.gotoAndStop(_currentframe+1);
        
delete this.onEnterFrame;
        }
    else
        {
        
_root.percent_field.text=percent;
        }
    } 
Viel Spaß damit.


Liebe Grüße

Yves

Geändert von 409coffeemaker (04-09-2004 um 18:02 Uhr)
  Mit Zitat antworten
Alt 04-09-2004, 16:56   #2 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi,
hier eine Anleitung wie man Dateien via Flash & PHP verschicken kann.

Variablen können beliebig aus Flash weitergegeben werden, ihr müsst euch dann nur das Script anpassen.

Anwendungsbeispiel:
Via PHP ein Verzeichnis auslesen, Daten in Flash einlese und eine Combobox generieren. Dann dort die gewünschte Datei auswählen und zuschicken lassen. So kann man zb. ein bequemen Onlineversand für Dokumente erstellen. In der mail.php könnte man dann noch Infos über den User in einer MySQL DB loggen, um später Downloadstatistiken etc. zu generieren… lasst mich wissen was ihr daraus macht.


PHP-Code:
<?php
$file
="flashmailer.zip";
$from="message@in-a-bottle.com";
$designation="Message In a Bottle";
$recipient=utf8_decode($_POST['var_email']);
$boundary=strtoupper(md5(uniqid(time())));
$mail_header .= "From:$designation <$from>\r\n";
$mail_header .= "MIME-Version: 1.0";
$mail_header .= "\r\nContent-Type: multipart/mixed; boundary=$boundary";
$mail_header .= "\r\n--$boundary"
$mail_header .= "\r\nContent-Type: text/plain";
$mail_header .= "\r\nContent-Transfer-Encoding: 8bit";
$file_content=fread(fopen($file,"r"),filesize($file));
$file_content=chunk_split(base64_encode($file_content));
$mail_header .= "\r\n--$boundary";
$mail_header .= "\r\nContent-Type: application/octetstream; name=\"$file\"";
$mail_header .= "\r\nContent-Transfer-Encoding: base64";
$mail_header .= "\r\nContent-Disposition: attachment; filename=\"$file\"";
$mail_header .= "\r\n$file_content";
$mail_header .= "\r\n--$boundary--";
if(
mail($recipient,"Flashmailer Sources","",$mail_header))
    {
    echo
'&status=sent';
    }
?>
PHP-Code:
//Actionscript 1
MovieClip.prototype.sendmail=function(useradress)
    {
    
_root.status.text='Bitte warten...';
    var 
adressError=function(x
        {
        var 
badtype=[' '];
        if (
x.indexOf('@')>&& x.lastIndexOf('.')>&& x.lastIndexOf('.')-!== x.indexOf('@') && x.length<x.lastIndexOf('.')+&& x.length>x.lastIndexOf('.')+2
            {
            for (var 
i=0i<badtype.lengthi++) 
                {
                if (
x.indexOf(badtype[i])>0
                    {
                    return 
true;
                    }
                }
            } 
        else 
            {
            return 
true;
            }
        };
    if (!
adressError(useradress)) 
        {    
        var 
sender=new LoadVars()
        
sender.object=this;
        
sender.var_email=useradress;            
        
sender.sendAndLoad('mail.php'sender'POST');        
        
sender.onLoad=function(success)
            {
            if(
success)
                {
                if(
this.status=='sent')
                    {
                    
_root.status.text='Email erfolgreich verschickt';
                    
_root.input.text='';
                    
delete this.object['sender'];
                    }
                }
            };
        }
    else
        {            
        
_root.status.text='Emailadresse inkorrekt';
        }
    }; 
Ist getestet und funktioniert.

Entweder lasst ihr euch jetzt den Stuff direkt zuschicken oder ihr ladet Ihn euch direkt hier als Anhang herunter.

Liebe Grüße

Yves
Angehängte Dateien
Dateityp: zip flashmailer.zip (11,4 KB, 259x aufgerufen)
  Mit Zitat antworten
Alt 04-09-2004, 16:57   #3 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi zusammen,

ich hab bei einem aktuellen Job das Problem gehabt, das ich dynamisch geladene Bilder mit einem weißen Rand versehen wollte. Nur die Bilder waren immer verschieden breit.

Also habe ich einen Prototype entwickelt.

PHP-Code:
//Actionscript 1.0
MovieClip.prototype.drawFrame=function(x1,y1,x2,y2,lineSize,colour,alpha)
     { 
    
this.lineStyle (lineSizecolouralpha);
    
with(this)
        { 
        
lineTo(x2y1); 
        
lineTo(x2y2); 
        
lineTo(x1y2); 
        
lineTo(x1y1); 
        } 
    } 
Anwendungsbeispiel:

Es werden Bilder mittels des loadVars Objektes via PHP aus MySQL ausgelesen. Eine for Schleife instanziert die Bilder und setzt Sie mit einem Abstand von 30px nebeneinander. Ist ein großes Bild für das kleine Previewbild vorhanden, wir eine Funktion im onReleaseHandler als Eigenschaft des instanzierten MovieClips definiert.

Dazu muss selbstverständlich im <head> der Datiei, die diese swf beinhaltet, entsprechende Javascript Funktion PopUp(); definiert sein.

Netter Nebeneffekt des Scripts ist es, das die Bilder mittels einer Prozentanzeige preloaded werden können.


PHP-Code:
//Actionscript 1
for(var j=0;j<this.repeats;j++)
    {
    var 
images=image_box.attachMovie('images','images'+j,j);
    
images.image=eval('this.image_'+j);
    
images.image_max=eval('this.image_max_'+j);                        
    
images.frame.loadMovie(images.image);
    
images.percent_field.text=0;
    
images.sign_field.text='%';
    
images.onEnterFrame=function()
        {
        var 
current=this.frame.getBytesLoaded()
        var 
total=this.frame.getBytesTotal()
        var 
percent=Math.round((current/total)*100);                        
        if(
percent>&& percent!=100)
            {
            
this.percent_field.text=percent;
            }
        if(
this.frame.getBytesLoaded()==this.frame.getBytesTotal() && this.frame.getBytesLoaded()>4)
            {
            
this.percent_field.text='';
            
this.sign_field.text='';
            
this.frame.drawFrame(0,0,this.frame._width,this.frame._height,3,'0xffffff',100);
            if(
this.image_max!='')
                {
                
this.onRelease=function()
                    {
                    
getURL("javascript:popup('"+this.image_max+"');");
                    }
                }
            
delete this.onEnterFrame;
            }
        }
        
images._x=base_x+(j*(this.frame._width+30));
        
images._y=base_y;
    } 

Enjoy.

Yves
  Mit Zitat antworten
Alt 04-09-2004, 16:58   #4 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi zusammen,

aufgrund der großen Nachfrage möchte ich hier ein kleines Beispiel veranschaulichen, wie man mittels Flash, PHP und MySQL Inhalte dynamisch auslesen kann und ebenfalls auch in MySQL einfügt.

Als Beispiel dazu eine Shoutbox in Flash.


Ich halte diese Beispiel bewusst sehr simpel und verzicht daher auf Kommentare, da diese Funktionen und Kompositionen selbstsprechend plakativ sein sollten.


Zuerst muss die Datenbank, respektive der Table, erstellt werden.


PHP-Code:
//SQL
DROP TABLE IF EXISTS `words`;
CREATE TABLE `words` (
  `
idbigint(20unsigned NOT NULL auto_increment,
  `
timevarchar(255NOT NULL default '',
  `
wordstext NOT NULL,
  `
providervarchar(255NOT NULL default '',
  `
client_ipvarchar(255NOT NULL default '',
  `
browservarchar(255NOT NULL default '',
  
PRIMARY KEY  (`id`),
TYPE=MyISAM AUTO_INCREMENT=
Provider, Client und Browser dienen dazu, später für jedes Posting die IP des Clients, Providergates und UserAgent mitzuloggen, falls jemand mal meint, irgendwelche Weltherrschaftsphantasien oder einen anderen geistigen Umnachtungszustand publizieren zu müssen. We'll watching you

Jetzt kommt die config.inc.php an die Reihe, in der wir der Einfachheit einen Handler definieren. Dazu müsst ihr hier entsprechend eure Daten anpassen.

PHP-Code:
<?php
$db_host
='localhost';
$db_login='root';
$db_pass='000001';
$db_dbase='local';
$handler=
mysql_connect($db_host,$db_login,$db_pass);
mysql_select_db($db_dbase,$handler);
$db_tab='words';
?>

Als nächstes brauchen wir noch eine function.inc.php, da alles, was wir aus MySQL für Actionscript auslesen, sofern es ein '&' enthält, dieses nach Hexcode konvertieren müssen.

PHP-Code:
<?php
class charReplace
    
{
    function 
replace($x)
        {
        
$k1=array('&');
        
$k2=array('%26');
        for (
$i=0;$i<1;$i++)
            {
            
$x=str_replace($k1[$i],$k2[$i],$x);
            }
        return 
$x;
        }
    }
?>
Nun die query.php, welche dafür zuständig ist, die Inhalte auszulesen.

PHP-Code:
<?php
require_once('config.inc.php');
require_once(
'function.inc.php');
$read=mysql_query("select time,words from $db_tab order by id desc",$handler);
while(
$a=mysql_fetch_array($read))
    {
    
$result.='<b>'.$a['time'].'</b> '.charReplace::replace(utf8_encode($a['words'])).'<br>';
    }
echo 
'&words='.$result;
?>
Wichtig ist hierbei, stets die ausgelesenen Inhalte nach UTF-8 Unicode zu konvertieren, da Flash intern mit dieser Codierung arbeitet. Variablen werden, sofern man nicht mit XML arbeitet, in der Form &Varname=Wert definiert bzw. übergeben.

Jetzt die PHP Datei, welche die Inhalte einfügt.

PHP-Code:
<?php
require_once('config.inc.php');
$time=date('d.m.Y H:i:s');
$words=utf8_decode($_POST['input']);
$provider=getHostByAddr($_SERVER['REMOTE_ADDR']);
$client_ip=$_SERVER['REMOTE_ADDR'];
$browser=$_SERVER['HTTP_USER_AGENT'];
mysql_db_query($db_dbase,"insert into $db_tab (time,words,provider,client_ip,browser) VALUES ('$time','$words','$provider','$client_ip','$browser')");
?>
Wie ihr an dieser Stelle merkt, laufen die wichtigsten Funktionen in PHP ab. PHP dient also als „Bridge“ zu MySQL.


Hier nun die HTML Datei, in der wir die swf einbetten. Informationen zur Flashdetection, die hier angewendet wird, findet ihr im 2 Posting dieses Threads oder in entsprechenden Thread hier im Flash/Actionscript Forum.

PHP-Code:
<html>
<
head>
<
meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<
meta http-equiv="expires" content="7">
<
meta name="description" content="">
<
meta name="keywords"lang="de" content="">
<
meta name="robots" content="all">
<
meta name="revisit-after" content="7 days">
<
title>Words</title>
<
script language="javascript" type="text/javascript" src="function.inc.js"></script>
<link rel="stylesheet" type="text/css" href="default.css">
</head>
<body>
<table width="100%" height="100%">
    <tr>
        <td align="center" valign="middle">
            <table>
                <tr>
                    <td>
                       <script language="javascript" type="text/javascript">                 
                            if(hasRightVersion) 
                                {
                                var oeTags='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
                                + 'width="663" height="507"'
                                + 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
                                + '<param name="movie" value="words.swf">'
                                + '<param name="play" value="true">'
                                + '<param name="loop" value="false">'
                                + '<param name="quality" value="best">'
                                + '<param name="menu" value="false">'
                                + '<embed src="words.swf"'
                                + 'width="663" height="507"'
                                + 'play="true"'
                                + 'loop="false"'
                                + 'quality="best"'
                                + 'menu="false"'
                                + 'type="application/x-shockwave-flash"'
                                + 'pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">'
                                + '<\/embed>'
                                + '<\/object>';
                                document.write(oeTags);
                                } 
                            else 
                                {
                                var alternateContent='You need Macromedia Flash to view this site.';
                                document.write(alternateContent);
                                }
                        </script>
                        <noscript>
                            You need to activate Javascript to view this site.
                        </noscript>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>
</body>
</html> 

Ok, und nun das sagenumwobene Actionscript.
Ich verzichte hier auf „CallBack Funktionen“ um zu prüfen, ob das PHP/MySQL Duo seinen Job vernünftig gemacht hat.

PHP-Code:
//Actionscript 1.0
MovieClip.prototype.sender=function()
    {
    var 
sender=new LoadVars();
    
sender.object=this;
    
sender.input=_root.input_field.text;
    
sender.sendAndLoad('insert.php',sender,'post');
    
sender.onLoad=function()
        {
        
_root.input_field.text='';
        
loader();
        
delete this.object[sender];
        }
    }
        
MovieClip.prototype.loader=function()
    {
    var 
words=new LoadVars();
    
words.object=this;
    
words.load('query.php');
    
words.onLoad=function()
        {
        
_root.words.htmltext=this.words.split('\r\n').join('\r');
        
delete this.object['words'];
        };
    };
    
_root.sendClip.onRelease=function()
    {
    
sender();
    }
    
_root.loaderClip.onRelease=function()
    {
    
loader();
    }
    
    
_root.loader();
this.stop(); 
Split & Join, da ansonsten Zeilenumbrüche doppelt dargestellt werden.

textfield.htmltext weist einen HTML formatierten Text dem Textfeld zu, da ansonsten die in der query.php konkatenierten HTML Tags nicht interpretiert werden.

Liebe Grüße

Yves

Geändert von 409coffeemaker (04-09-2004 um 16:59 Uhr)
  Mit Zitat antworten
Alt 04-09-2004, 16:59   #5 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi,

ich hab mal etwas gebastelt, da man mich oft fragt wie das geht.

Ihr habt ein Bild und möchtet, das man onClick ein PopUp bekommt, welches das Bild in größerer Darstellung enthält. Nur soll das PopUp sich der Bildgröße anpassen und außerdem auf dem Bildschirm zentrieren.

So geht's:

Zuerst das Javascript, das das PopUp öffnet, zentriert, sowie den Titel des Popups und den Pfad zu dem Bild als Funktionsparameter enthält und an die PHP Datei, welche das PopUp darstellen wird.

PHP-Code:
//Javascript 1.0
function popup(vars)
    {
    var 
object="popup.php?"+vars;
    
window.open(object,"PopUp","width=10,height=10,location=0,scrollbars=no,resizable=0,status=no");  
    } 
Dann die PHP Datei, welche die Bildgröße ausliest und an ein Javascript weitergibt, um das PopUp zu zentrieren und anzupassen.

PHP-Code:
<html>
<head>
<title><?php echo $_GET['title']; ?></title>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta http-equiv="expires" content="7">
<link rel="stylesheet" type="text/css" href="default.css">
</head>
<?php
$constraints
=getimagesize($_GET['image']);
$x=$constraints[0];
$y=$constraints[1]+20;
echo
'
    <body onload="window.resizeTo('
.$x.','.$y.');window.moveTo((screen.width-'.$x.')/2,(screen.height-'.$y.')/2);focus();" class="popup">
    <img src="'
.$_GET['image'].'">
    '
;
?>
</body>
</html>
Eingebunden in AS kann das dann so aussehen:


PHP-Code:

//Actionscript 1.0

image.onRelease=function()
    {
    
getURL("javascript:popup('title=Resized&image=img/01stuhl.jpg');");
    } 

In der HTML, in der die SWF eingebettet ist, natürlich nicht vergessen, das Javascript zu includen

PHP-Code:
<html>
<
head>
<
script language="javascript" type="text/javascript" src="function.inc.js"></script>
</head>
<body>
<table width="100%" height="100%">
    <tr>
        <td align="center" valign="middle">
            <table>
                <tr>
                    <td>
                        <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs flash/swflash.cab#version=6,0,0,0" width="333" height="200">
                            <param name="movie" value="resize.swf"> 
                            <param name="quality" value="high"> 
                            <embed src="resize.swf" quality=high width="333" height="200" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
                            </embed>
                        </object>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>
</body>
</html> 
Viel Spaß damit,

liebe Grüße

Yves
  Mit Zitat antworten
Alt 04-09-2004, 17:00   #6 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi zusammen,

hier möchte ich anhand des Beispiels eines simplen Bookingkalenders für zb. Bands zeigen, wie man mehrere Datensätze mit PHP als Bridge aus MySQL ausliest und in Flash dann eine Scrollpane instanziert und mit diesen Inhalten füllt.

Außerdem ist ein simples Admintool zur Verwaltung der Dbase mitinbegriffen, sowie die mittlerweile schon obligatorische Flashdetection.

Die Verwendung der function.inc.php zum Escapen des Variablenseparators '&' in Actionscript, sowie die Funktion und Arbeitsweise der Flashdetection ist hier erklärt. Falls ihr noch keine Erfahrungen mit PHP, MySQL und Actionscript in diesem Zusammenhang habt, sollte ihr auch erst jenes Tutorial durcharbeiten.

Beginnen wir hier dann direkt mit der Query.php

PHP-Code:
<?php
require_once('config.inc.php');
require_once(
'function.inc.php');
$i=0;
$read=mysql_query("Select date,event,location from $db_tab order by date desc",$handler);
while(
$a=mysql_fetch_array($read))
    {
    
$result.='&date_'.$i.'='.charReplace::replace(utf8_encode($a['date']));
    
$result.='&event_'.$i.'='.charReplace::replace(utf8_encode($a['event']));
    
$result.='&location_'.$i.'='.charReplace::replace(utf8_encode($a['location']));
    
$i++;
    }
$result.='&repeats='.$i;
echo 
$result;
?>
Der Unterschied zum vorherigen Tutorial ist, das wir hier 3 Variablen definieren, welche pro Datensatz durchgezählt werden.

Diese Werte werden in folgendem Actionscript weiterverarbeitet.

PHP-Code:
//Actionscript 1.0
MovieClip.prototype.loader=function()
    {
    
    var 
scrollpane=_root.attachMovie('FScrollPaneSymbol','scrollpane',1);
    
scrollpane._x=0;
    
scrollpane._y=0;
    
scrollpane.width=500;
    
scrollpane.height=200;
    
    var 
loader=new LoadVars();
    
loader.object=this;
    
loader.load('query.php');
    
loader.onLoad=function()
        {
        
        
        var 
base_x=10;
        var 
base_y=0;
        var 
container=createEmptyMovieClip('container',2);
        for(var 
i=0;i<=this.repeats;i++)
            {            
            var 
element=container.attachMovie('element','event'+i,i);
            
element.date=this['date_'+i];        
            
element.event=this['event_'+i];
            
element.location=this['location_'+i];
            
element._y=base_y+(i*50);
            }
            
        
scrollpane.setScrollContent(container);
        
scrollpane.setVScroll=false;
        
scrollpane.setHScroll=auto;
        
container._x=base_x;

        
delete this.object['loader'];
        };
    };
loader();
this.stop(); 
Das Interessante für alle, die bisher wenig mit Flash gearbeitet haben ist, das die Bühne vollkommen leer ist und alles per Script erstellt wird.


Zuerst wird die Scrollpane aus der Library auf der Bühne instanziert und in Bezug auf Größe und Platzierung definiert.

Anschließend liest nun das loadVars Objekt mittels der Query.php die Datensätze aus MySQL aus.

Dabei werden die Datensätze synchron ebenfalls mittels i-Zähler durchnumeriert. Das ganze geschieht in einer for-Schleife, dessen Terminierungswert wir von PHP übermittelt bekommen.

Es wird also ein leerer MovieClip dynamisch erstellt, in den wir dann pro Datensatz einen MovieClip einfügen.

Dieser MovieClip besitzt 3 Komponentendefinitionen als Eigenschaften vom Datentyp String. Diese 3 Eigenschaften werden in der for-Schleife mit den Werten aus PHP definiert, damit die in diesem MovieClip enthaltenen, dynamischen Textfelder ihren Inhalt zugewiesen bekommen können.

Die Position der einzelnen DatensatzMovieClips wird mittels des i-Zählers und der Multiplikation dessen mit dem gewünschten Abstand definiert.


Anschließend setzen wir den Container, der die Elemente enthält, als ScrollContent der zuvor instanzierten Scrollpane und definieren die Komponentenparameter bzw. Eigenschaften dieser bezüglich des horizontalen und vertikalen Scrollverhaltens.

Ist das geschehen, richten wir den Container in der Scrollpane nocheinmal aus, indem wir den Abstand zur linken Aussenseite relativ um 10px vergrößern.

Das war's.

Das mitingebriffene Admintool und dessen Funktionen brauche ich hier nicht näher zu erklären, da es den Rahmen des Flashforums sprengen würde.

Delmar wird euch jedoch gerne in seinem Forum dazu weitere Fragen beantworten.

Viel Spaß damit.


Liebe Grüße

Yves
  Mit Zitat antworten
Alt 04-09-2004, 17:01   #7 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi zusammen,

hier noch ein Tutorial, das auf dieses Tutorial aufbaut.

Dabei geht es darum, Inhalte zeitgesteuert auszulesen. Hier am Beispiel eine Flashchats, der allerdings aufgrund seines Performancehungers als Beta einzustufen ist. Das Beispiel dient also nur als Lernobjekt. Zum Testen unter realistischen Bedingungen gebe ich euch den Hinweis mit, das ich mit 25 Usern unseren dedicated SQL Server lahmgelegt habe. Teilweise waren bis zu 250 MySQL Transaktionen pro Sekunde zu verzeichnen.

Fangen wir mit der Query.php an, die 2 Varianten des Auslesen bereitstellt, welche aus Flash gesteuert werden.

PHP-Code:
<?php
require_once('config.inc.php');
require_once(
'function.inc.php');
if(
$_POST['details']=='show')
    {
    
$read=mysql_query("select user,timestamp,words from $db_tab order by id desc LIMIT 0,50",$handler);
    while(
$a=mysql_fetch_array($read))
        {
        
$result.=$a['user'].' '.$a['timestamp'].'<br>'.$a['words'].'<br>';
        }
    }
else
    {
    
$read=mysql_query("select user,words from $db_tab order by id desc LIMIT 0,50",$handler);
    while(
$a=mysql_fetch_array($read))
        {
        
$result.=$a['user'].'<br>'.$a['words'].'<br>';
        }
    }
echo 
'&words='.charReplace::replace(utf8_encode($result));
?>

Der erste Teil des Actionscript liegt auf dem Loginbutton, der den dort eingegeben Usernamen global als Variable definiert.

PHP-Code:
//Actionscript 1.0
on(release)
    {
    if(
_root.userName.text!='')
        {
        
_global.user=user;
        
this.gotoAndStop(_currentframe+1);
        }
    }
on(keyPress '<Enter>')
    {
    if(
_root.userName.text!='')
        {
        
_global.user=user;
        
this.gotoAndStop(_currentframe+1);
        }
    } 

Im 2. Frame befinden sich dann die Funktionen, die für das Auslesen und Einfügen der Mitteilungen zuständig sind, sowie die Funktion der Checkbox, die definiert, ob das loadVars Objekt detailierte oder minimale Informationen (Datum, Uhrzeit) abfragen soll.

PHP-Code:
//Actionscript 1.0
var details=this.attachMovie('FCheckBoxSymbol','details',1);
details._x=52;
details._y=380;
details.setLabel('Details');
details.setChangeHandler('detailsBox');
var 
detailsBox=function()
    {
    if(!
details.getValue())
        {
        
_global.details='hide';
        }
    else
        {
        
_global.details='show';
        }
    }
details.setValue(true);
MovieClip.prototype.read=function()
    {
    var 
readContent=new LoadVars();
    
readContent.object=this;
    
readContent.details=_global.details;
    
readContent.sendAndLoad('query.php'readContent'POST');
    
readContent.onLoad=function()
        {
        
_root.main.htmltext=this.words;
        
_root.read();
        
delete this.object['readContent'];
        }
    }
MovieClip.prototype.insert=function()
    {
    if(
_root.userInput.text!='')
        {
        var 
insertContent=new LoadVars();
        
insertContent.object=this;
        
insertContent.words=words;
        
insertContent.user=_global.user;
        
insertContent.sendAndLoad('insert.php'insertContent'POST');
        
insertContent.onLoad=function()
            {
            
_root.userInput.text='';
            
delete this.object['insertContent'];
            }
        }
    }
this.read();
this.stop(); 

Neu ist hier also das Nutzen der Checkbox und die Integration ihrer onChangeHanlder in das LoadVars Objekt, welches mit sendAndLoad() eine wechselseitige Kommunikation mit PHP erlaubt. Wenn man nun eine stetige Refreshrate haben möchte, kann man entweder ein Interval für den Aufruf des Read Prototypes setzen, oder aber, man schreibt den Funktionsaufruf in einen onEnterFrame Handler, was allerdings zu den o.g. kritischen SQL-Queries führen wird.


Viel Spaß.


Liebe Grüße

Yves
  Mit Zitat antworten
Alt 04-09-2004, 17:02   #8 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi zusammen,

a short one…

Wenn ihr MovieClips mit Geraden verbinden wollt, geht das ganz einfach mit folgendem Script:

PHP-Code:
//Actionscript 1.0
MovieClip.prototype.draw=function(x,y,lineSize,colour,alpha)
     { 
    
this.lineStyle (lineSizecolouralpha);
    
with(this)
        { 
        
lineTo(xy); 
        } 
    };
_root.mc1.draw(_root.mc2._x-_root.mc1._x,_root.mc2._y-_root.mc1._y,2,'0xff0000',60);
_root.mc2.draw(_root.mc3._x-_root.mc2._x,_root.mc3._y-_root.mc2._y,2,'0xff0000',60); 

Damit kann man dann hinterher noch nette Animationen basteln… zb. die MovieClips anfassen und durch die Gegend ziehen… sieht verrückt aus…

PHP-Code:
//Actionscript 1.0
MovieClip.prototype.draw=function(x,y,lineSize,colour,alpha)
     { 
    
this.lineStyle (lineSizecolouralpha);
    
with(this)
        { 
        
lineTo(xy); 
        } 
    };
this.onEnterFrame=function()
    {
    
_root.mc1.draw(_root.mc2._x-_root.mc1._x,_root.mc2._y-_root.mc1._y,2,'0xff0000',60);
    
_root.mc2.draw(_root.mc3._x-_root.mc2._x,_root.mc3._y-_root.mc2._y,2,'0xff0000',60);
    }

_root.mc1.onPress=function()
    {
    
this.startDrag();
    }
_root.mc2.onPress=function()
    {
    
this.startDrag();
    }
_root.mc3.onPress=function()
    {
    
this.startDrag();
    }
    
_root.mc1.onRelease=function()
    {
    
this.stopDrag();
    }
_root.mc2.onRelease=function()
    {
    
this.stopDrag();
    }
_root.mc3.onRelease=function()
    {
    
this.stopDrag();
    } 
Oder noch schlimmer… einfach alles zufällig durch die Gegend wirbeln lassen bis irgendwann die Performance im Keller ist, da alles vollgekritzelt wurde…

PHP-Code:
MovieClip.prototype.draw=function(x,y,lineSize,colour,alpha)
     { 
    
this.lineStyle (lineSizecolouralpha);
    
with(this)
        { 
        
lineTo(xy); 
        } 
    };
this.onEnterFrame=function()
    {
    
_root.mc1.draw(_root.mc2._x-_root.mc1._x,_root.mc2._y-_root.mc1._y,2,'0xff0000',60);
    
_root.mc2.draw(_root.mc3._x-_root.mc2._x,_root.mc3._y-_root.mc2._y,2,'0xff0000',60);
    
_root.mc1._x=random(400);
    
_root.mc1._y=random(200);
    
_root.mc2._x=random(400);
    
_root.mc2._y=random(200);
    
_root.mc3._x=random(400);
    
_root.mc3._y=random(200);
    } 


Liebe Grüße

Yves
  Mit Zitat antworten
Alt 04-09-2004, 17:02   #9 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hier noch ein Beispiel dazu… diesmal mit clear(), damit die Linien sich nicht überlagern.
Die Kugeln 1 , 2 , 3 sind mit den Tasten 1 , 2 , 3 ansprechbar. Falls eine dieser Tasten gedrückt ist, oder eine Kombination dieser, kann man mittels der Pfeiltasten die Zeichnung steuern.

PHP-Code:
//Actionscript 1.0
 
MovieClip.prototype.draw = function(xydickefarbealpha
     { 
    
this.clear(); 
    
this.lineStyle(dickefarbealpha); 
    
this.moveTo(00); 
    
this.lineTo(xy); 
    }; 
punkt2.onEnterFrame = function() 
    { 
    
_root.punkt1.draw(_root.punkt2._x-_root.punkt1._x_root.punkt2._y-_root.punkt1._y2'0x000000'100); 
    
_root.punkt2.draw(_root.punkt3._x-_root.punkt2._x_root.punkt3._y-_root.punkt2._y2'0x000000'100);
    
_root.punkt3.draw(_root.punkt1._x-_root.punkt3._x_root.punkt1._y-_root.punkt3._y2'0x000000'100);
     
    if (
Key.isDown(Key.DOWN)) 
        { 
        if(
Key.isDown(49))
            {                
            
_root.punkt1._y += 1
            }
        if(
Key.isDown(50))
            {
            
_root.punkt2._y += 1
            }
        if(
Key.isDown(51))
            {
            
_root.punkt3._y += 1
            }
        } 
        
    if (
Key.isDown(Key.UP)) 
        { 
        if(
Key.isDown(49))
            {                
            
_root.punkt1._y -= 1
            }
        if(
Key.isDown(50))
            {
            
_root.punkt2._y -= 1
            }
        if(
Key.isDown(51))
            {
            
_root.punkt3._y -= 1
            } 
        } 
    if (
Key.isDown(Key.LEFT)) 
        { 
        if(
Key.isDown(49))
            {                
            
_root.punkt1._x -= 1
            }
        if(
Key.isDown(50))
            {
            
_root.punkt2._x -= 1
            }
        if(
Key.isDown(51))
            {
            
_root.punkt3._x -= 1
            }
        } 
    if (
Key.isDown(Key.RIGHT)) 
        { 
        if(
Key.isDown(49))
            {                
            
_root.punkt1._x += 1
            }
        if(
Key.isDown(50))
            {
            
_root.punkt2._x += 1
            }
        if(
Key.isDown(51))
            {
            
_root.punkt3._x += 1
            }
        } 
}; 
Liebe Grüße

Yves
  Mit Zitat antworten
Alt 04-09-2004, 17:25   #10 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
könnte das vielleicht nen Mod splitten , so dass jedes Tut nen eigenen Thread bekommt?
sonst werden die Fragen kreuz und quer schießen...

@409coffeemaker:
sieht alles rehct gut aus.. aber wenn du die nicht selbst geschrieben hast, dann hätte ein Link auch gereicht denke ich!

Und das nächste mal wenn du nen TUTORIAL hast dann machstes so:

neuen Thread in z.b. "Flash MX" und dort gibste als Betreff "[TUTORIAL] (genauere Info)" an!
meist wird dein thread dann im tut board verlinkt!

...so kann man wenn man tutorials sucht einfach im entsprechenden Board nachschauen oder aber man sucht nach "[TUTORIAL]"

grz
pape
pape ist offline   Mit Zitat antworten
Alt 04-09-2004, 18:00   #11 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hehe… die habe ich alle selbst geschrieben… ich bin halt sehr aktiv bei Macuser.de gewesen und möchte nun meine freie Zeit für Forumsaktivität nur noch im FF verbringen… daher quasi die Tutorials portiert.

Also keine Sorge… habe ich alle selbst geschrieben… (ich heiss ja Yves)


Liebe Grüße

Yves
  Mit Zitat antworten
Alt 02-11-2004, 17:58   #12 (permalink)
Taugenix
 
Benutzerbild von ccrider
 
Registriert seit: Jun 2004
Beiträge: 50
Kleiner Fehler

PHP-Code:
//SQL
DROP TABLE IF EXISTS `words`;
CREATE TABLE `words` (
  `
idbigint(20unsigned NOT NULL auto_increment,
  `
timevarchar(255NOT NULL default '',
  `
wordstext NOT NULL,
  `
providervarchar(255NOT NULL default '',
  `
client_ipvarchar(255NOT NULL default '',
  `
browservarchar(255NOT NULL default '',
  
PRIMARY KEY  (`id`),
TYPE=MyISAM AUTO_INCREMENT=

Also nur mal so als Anmerkung, das Komma nach Primary Key ('id'),weglassen
ccrider ist offline   Mit Zitat antworten
Alt 02-11-2004, 18:00   #13 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Dooooongeschööööööööööööööön
  Mit Zitat antworten
Alt 23-12-2004, 20:19   #14 (permalink)
robo kalkühl
Gast
 
Beiträge: n/a
hilfe

ich bringe mir grade php und mysql bei,
und habe mal aus testzwecken den "einfachen bookingkalender" nachgebastelt und versuche ihn zu verstehen,
klappt auch hervorragent,
nur:
die abbruchvariable der for-schleife (repeats) wird bei mir nicht anerkannt!!!
vieleicht wichtig : flash mx
habe allerhand damit rumprobiert,
sie wird richtig geladen,
und ich kann sie mir auch (in einem textfeld) anzeigen lassen,
aber flash weigert sich bei mir konsequent die vergleichsoperation, aber auch additionen oder dergleichen darauf anzuwenden!!!
is n bischen blödi, da die schleife dann nicht aufhören will,
irgentwelche vorschläge?

Geändert von robo kalkühl (23-12-2004 um 20:20 Uhr)
  Mit Zitat antworten
Alt 23-12-2004, 20:26   #15 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Poste mal den Code…

Ich vermute das wenn die Var angezeigt wird, das das ganze dann einfach daran liegt, das die Begrenzungsvariable vom Datentyp String ist. Muss aber Integer oder Float sein. Das erklärt dann auch die Probleme mit den Rechenoperationen!

Yves
  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



Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele