Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-03-2010, 08:37   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 53
Question Air Programm läuft nicht zuverlässig

Hi,

ich habe ein AIR Programm geschrieben, dass mir eine Zeitraffer Aufnahme einer Webcam auf einer Baustelle generieren soll. Ich habe dafür eine Webcam angeschlossen und nehme je nach Ausgabe der XML/PHP in bestimmten Zeitintervallen ein Bild auf. Das Bild wird auf dem Rechner gespeichert und an eine andere PHP Datei als Bitarray gesendet, die daraus ein Bild auf dem Server ablegt. Das funktioniert alles soweit prima, nur wenn ich diese Anwendung einige Zeit laufen lassen (meist bis zu ca. 12 Stunden) scheint sie sich aufzuhängen. Kann das evtl. mit der länge des setInterval zu tun haben, das der vielleicht nicht zuverlässig läuft? Ich poste hier mal den Code der AIR Datei und der PHP, die die XML generiert. Hoffentlich könnt ihr mir helfen. Ich kann den Fehler leider nicht debuggen aber vielleicht könnt ihr mir Tips zur Optimierung der Anwendung geben oder mögliche Fehlerquellen erkennen (denn ich bin alles andere als ein Profi, wie man sieht)

Code:
stop();
import com.adobe.images.PNGEncoder;
import com.adobe.images.JPGEncoder;
import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.filesystem.FileMode;
import flash.utils.ByteArray;

var theserver="http://www.irgendwas.de/";

var authcode="";
var readoutShot_var="false";

var fileRef:FileReference = new FileReference();

var myURLLoader:URLLoader = new URLLoader();

//Camera initialisieren
var cam:Camera = Camera.getCamera();
cam.setMode(1920, 1080, 30);
var video:Video = new Video(1920, 1080);
video.attachCamera(cam);
this.addChild(video);
MovieClip(root).setChildIndex(ausgabe, 1);

var count:int = 0;

//Standbild aufnehmen
var myJPEGData:ByteArray;

function saveStill():void
{
	var bmd:BitmapData = new BitmapData(1920, 1080);
	bmd.draw(video);
	var ba:ByteArray = PNGEncoder.encode(bmd);
	var file:File=new File();
	file.nativePath = "/Users/Bastii/Sites/"+authcode+".png";
	var fileStream:FileStream = new FileStream();
	fileStream.open(file, FileMode.WRITE);
	fileStream.writeBytes(ba);
	fileStream.close();
	
	var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
	var jpgURLRequest:URLRequest = new URLRequest (theserver+"jpg_encoder_download.php?name="+authcode+".png");		
	
	jpgURLRequest.requestHeaders.push(header);				
	jpgURLRequest.method = URLRequestMethod.POST;				
	jpgURLRequest.data = ba;
	
	var jpgURLLoader:URLLoader = new URLLoader();
	jpgURLLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
	jpgURLLoader.load( jpgURLRequest );
	
}

//Ergebnis XML auslesen
function checkShot(evt:Event){
	XML.ignoreComments = true;
	XML.ignoreWhitespace = true;
	var checkShotResult:XML;
	checkShotResult = new XML(evt.target.data);
	var antwort=checkShotResult..action[0];
	var intervaltime:int=checkShotResult..interval[0];
	if(antwort=="shot"){
		authcode=checkShotResult..name[0];
		saveStill();
		clearInterval(interval);
		if(intervaltime > 30000){
			ausgabe.text="Interval Time is set to: "+intervaltime.toString()+" Mil Sec";
			interval=setInterval(readout, intervaltime);
			}
		else{
			interval=setInterval(readout, 30000);
			}
	}
	else{
		clearInterval(interval);
		interval=setInterval(readout, intervaltime);
		ausgabe.text="Pause - look again in: "+intervaltime.toString()+" Mil Sec";
		}
	}


function readout(){
	var getShot:URLLoader = new URLLoader();
	getShot.addEventListener(Event.COMPLETE, checkShot);

	var getShotURL = new URLRequest(theserver+"checkshot.php");
	getShot.load(getShotURL);
}



var interval:Number=setInterval(readout, 30000);
außerdem hier der PHP Code:

PHP-Code:
<?php 


$name
=time();
$wochentag=date(w);
if(
$wochentag && $wochentag 6){
    if(
date(H) > 09 && date(H)<21){
        
$action="shot";
    }
}
else{
    
$action="";
    }


if(
$action=="shot"){
echo(
'
    <?xml version="1.0" encoding="utf-8"?>
    <mysqlresult>
        <action>shot</action>
        <name>'
.$name.'</name>
        <interval>3600000</interval>
    </mysqlresult>
'
);
}
else{
echo(
'
    <?xml version="1.0" encoding="utf-8"?>
    <mysqlresult>
        <action>0</action>
        <interval>3600000</interval>
    </mysqlresult>
'
);
}


?>

Geändert von Sebbal (10-03-2010 um 08:41 Uhr)
Sebbal 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
Flash - Programm U3-fähig (läuft von USB-Stick) machen? ripcurl Am Rande 0 27-08-2007 16:52
Movieclip Größe zuverlässig bestimmen? Samuel Flash Einsteiger 11 06-02-2007 11:31
Popup onunload nicht zuverlässig sonline HTML und CSS 6 17-03-2004 12:22
bei schnellen klicks funktioniert mein hittest nicht zuverlässig jackie_o ActionScript 1 3 08-05-2003 09:05
XML-Socket nicht zuverlässig Skatmax Flash und Datenbanken 10 08-02-2002 14:00


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele