actionscript 3

equal function String.fromCharCode in PHP

Posted in PHP, actionscript 3 on February 17th, 2010 by admin – Be the first to comment

Hey it was problem before I see this solution, to pass charactes to PHP like numbers, basicly because Flash use fromCharCode in UTF-8 format and PHP do chr function work in ASCII.

So here is the script solution:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function uniord($ch) {

    $n = ord($ch{0});

    if ($n < 128) {
        return $n; // no conversion required
    }

    if ($n < 192 || $n > 253) {
        return false; // bad first byte || out of range
    }

    $arr = array(1 => 192, // byte position => range from
                 2 => 224,
                 3 => 240,
                 4 => 248,
                 5 => 252,
                 );

    foreach ($arr as $key => $val) {
        if ($n >= $val) { // add byte to the 'char' array
            $char[] = ord($ch{$key}) - 128;
            $range  = $val;
        } else {
            break; // save some e-trees
        }
    }

    $retval = ($n - $range) * pow(64, sizeof($char));

    foreach ($char as $key => $val) {
        $pow = sizeof($char) - ($key + 1); // invert key
        $retval += $val * pow(64, $pow);   // dark magic
    }

    return $retval;
}

found on : Unnamed – post number 1799714

Preventing SWFs From Running Locally

Posted in actionscript 3 on February 8th, 2010 by admin – Be the first to comment

IT is great to read this article. Lately the swf that I start localy do not check where they are started and I get a thrown errors… you can just make it little more professional by reading it.
Preventing SWFs From Running Locally

SharedObject between 2 movies

Posted in actionscript 3, projects & snippets on January 28th, 2010 by admin – 1 Comment

So lets create 2 files:

setCookies.fla

setCookies.fla flash env with component names

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var date:Date = new Date();
val_ti.text = ">> " +date.time;

setCookie_btn.addEventListener(MouseEvent.CLICK, clickHandler);
show_btn.addEventListener(MouseEvent.CLICK, showHandler);


function clickHandler(info:MouseEvent):void {
    var local_data:SharedObject = SharedObject.getLocal("VSh", "/");
    local_data.data.key = val_ti.text;
    status_txt.text = local_data.flush();
}

function showHandler(info:MouseEvent):void {
    var local_data:SharedObject = SharedObject.getLocal("VSh", "/");
    read_ti.text = local_data.data.key;
}

getCookies.fla

getCookies.fla flash evn with component names

getCookies.fla flash evn with component names

1
2
3
4
5
6
7
8
9
10
11
var timer:Timer = new Timer(500, 0);
timer.addEventListener(TimerEvent.TIMER, checkForCookieHandker);
timer.start();


info_ta.text = "check for cookies every 0.5 sec ... ";
function checkForCookieHandker(info:TimerEvent):void {
    var local_data:SharedObject = SharedObject.getLocal("VSh", "/");
    local_data.flush();
    info_ta.text = "[" + timer.currentCount + "] key: " + local_data.data.key + ", size: " + local_data.size + "\n" + info_ta.text;
}

Demo

Set cookie

This movie requires Flash Player 10

Get cookie

This movie requires Flash Player 10

see also:
where is .sol files in windows 7

source files in flash-cookie.zip

where is .sol files in windows 7

Posted in actionscript 3 on January 27th, 2010 by admin – Comments Off

Hi if you are searching where .sol files are set in Windows 7, check here:

C:\Users\USER\AppData\Roaming\Macromedia\Flash Player\#SharedObjects

Camera.getCamera problem => solution

Posted in actionscript 3, example on January 23rd, 2010 by admin – Comments Off

When you try to add a camera by name like this:

1
2
var cameraName:String = "WebCam";
var cam:Camera = Camera.getCamera(cameraName);

or like this

1
var cam:Camera = Camera.getCamera(cameranames[0]);

both return cam = null

Solution:

You need to add camera index like String in order to work

1
2
3
4
5
6
7
8
9
10
11
var cameraName:String = "WebCam";
var camera:Camera;
const imax:int = Camera.names.length;
var i:int = 0;
while (i < imax) {
    if (Camera.names[i] == cameraName) {
        camera = Camera.getCamera(String(i));
        break;
    }
    i++;
}

or use this function

1
2
3
4
5
6
7
8
9
10
11
12
13
const camera:Camera = getCamera("webCam");
       
private static function getCamera($cameraName_:String):Camera {
    const imax:int = Camera.names.length;
    var i:int = 0;
    while (i < imax) {
        if (Camera.names[i] == $camName_) {
            return Camera.getCamera(String(i));
        }
        i++;
    }
    return null;
}

so now you will have your camera that you wanted:

thank to:
pooja

Time Display

Posted in actionscript 3 on January 6th, 2010 by admin – Comments Off
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * Convert netStream.time (or seconds) into String format HH:MM:SS
 * @param   seconds
 * @return formated string HH:MM:SS
 */

public static function formatTime(time:Number):String {
    if (time < 0 || isNaN(time)) {
        return "00:00";
    }
   
    const hours:Number = Math.floor(time / 3600 % 24);
    const minutes:Number = Math.floor(time / 60 % 60);
    const seconds:Number = Math.floor(time % 60);
   
    const hString:String = hours < 10? "0" + hours: "" + hours;
    const mString:String = minutes < 10? "0" + minutes: "" + minutes;
    const sString:String = seconds < 10? "0" + seconds: "" + seconds;
   
    return hours > 0 ? hString + ":" + mString + ":" + sString : mString + ":" + sString;
}

Example:

1
2
3
4
5
6
7
8
trace(formatTime(103));
//01:43

trace(formatTime(3));
//00:03

trace(formatTime(3653));
//01:00:53

Email RegExp

Posted in actionscript 3 on September 28th, 2009 by admin – Comments Off

Email check if is valid with regular expression.

1
2
3
4
var email_re:RegExp = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
if (!email_re.test(_email_ctti.text)) {
    //Missing field/Invalid email;
}

Flash video Player Snapshot

Posted in PHP, actionscript 3, projects & snippets on September 14th, 2009 by admin – Comments Off

Hi I have recently working on saving different format images from flash. My previous work on this script was: Image Encode with Flash and PHP. Here you can create snapshots from video source.

Example

In this example you can save exported images also in your computer. I like this example more, because you can get different images, not boring same image again.

Screenshots:
snapshot file 1
snapshot file 2
snapshot file 3

Custom Flash Video Player

Posted in actionscript 3, projects & snippets on September 14th, 2009 by admin – Comments Off

I created easy to functionality to extend player. Here is the link:
video player

You pass total of 4 flash variables:

1
2
3
4
5
var flashvars = {};
flashvars.videoURL = "running man.mp4";
flashvars.autoPlay = 0;
flashvars.isImage = 1;
flashvars.imageURL = "RunningMan.jpg";

I’m using swfobject ot embed it in page. So lets say little more about variables:
videoURL is link to video location;
autoPlay is flag, if = 1, then video will start automatically playing. If = 0, then will stay stopped until play button is clicked;
isImage is flag, if = 1, them you have to pass image location to imageURL variable, to be loaded.If = 0, then no image is loaded;
isImage is image location;

Note: autoPlay and isImage cannot be 1 at the same time! Player will throw error. Also please use 0 or 1 for flags, not false or true.

Image Encode with Flash and PHP

Posted in PHP, actionscript 3 on September 10th, 2009 by admin – Comments Off

hi, this is a little project to save export/save images from flash.

This application allow you to see how to export in different image formats like: png, jpg and bmp.

I create class ImageCreator, whit it it’s this easy create images on server. You call the class like this:

1
2
var imagecreator:ImageCreator = new ImageCreator(image_spr, ImageCreator.EXPORT_TYPE_PNG, name);
imagecreator.addEventListener(ImageCreator.EVENT_COMPLETE_SAVING, completeWritingEvent);

Event ImageCreator.EVENT_COMPLETE_SAVING, will be dispatched when image is correctly saved on your server.
This is ImageCreator Class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.stanislavstankov.images {
    import com.adobe.images.*;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.net.URLRequestMethod;
    import flash.net.URLVariables;
    import flash.utils.ByteArray;
   
    public final class ImageCreator extends EventDispatcher {
       
        public static const EVENT_COMPLETE_SAVING:String = "eventCompleteSaving";
       
        public static const EXPORT_TYPE_JPG:int = 0;
        public static const EXPORT_TYPE_PNG:int = 1;
        public static const EXPORT_TYPE_BMP:int = 2;
       
        private const _FOLDER_FILE:String = "http://projects.stanislavstankov.com/imageEncoder/php";
        private const _PHP_FILE:String = "/imgEncoder.php";
       
       
        private var _filename:String;
       
        /*------------------------------------
            Constructor
        ------------------------------------*/

        /**
         * ImageCreator will create image on the server where the php file is.
         * Event EVENT_COMPLETE_SAVING, will be dispatched when image is created on server.
         * Also there is one get propert filepath, that will return the path where the image is saved.
         * @param   Dispaly object - sprite or moviclip that will be exported for image
         * @param   type of image that will be saved
         * @param   name of the file
         * @param   background color if transperent, leave it 0. If you need background change the value. It is ARGB type.
         */

        public function ImageCreator($displayObjectExport_:Sprite, $exportType_:int, $name_:String, $fillColorARGB_:uint = 0x0):void {
            var transperentFlag:Boolean = false;
            if ($exportType_ == EXPORT_TYPE_PNG) {
                transperentFlag = true;
            }
           
            const bmpdata:BitmapData = new BitmapData($displayObjectExport_.width, $displayObjectExport_.height, transperentFlag, $fillColorARGB_);
            bmpdata.draw($displayObjectExport_);
           
            createImage(bmpdata, $exportType_, $name_);
        }
        /*------------------------------------
            Public methods
        ------------------------------------*/

       
        public function get filepath():String {
            return _filename;
        }
       
       
        /*------------------------------------
            Private methods
        ------------------------------------*/

       
        private function createImage($bmpdata_:BitmapData, $exportType_:int, $name_:String):void {
            var byteArray:ByteArray;
            var contentType:String;
           
            switch ($exportType_) {
                case EXPORT_TYPE_JPG:
                    var jpgencode:JPGEncoder = new JPGEncoder(100);
                    byteArray = jpgencode.encode($bmpdata_);
                    contentType = 'image/jpg';
                    $name_ += ".jpg";
                break;
                case EXPORT_TYPE_PNG:
                    byteArray = PNGEncoder.encode($bmpdata_);
                    contentType = 'image/png';
                    $name_ += ".png";
                break;
                case EXPORT_TYPE_BMP:
                    byteArray = BMPEncoder.encode($bmpdata_);
                    contentType = 'image/bmp';
                    $name_ += ".bmp";
                break;
                default:
               
                break;
            }
           
            const request:URLRequest = new URLRequest(_FOLDER_FILE + _PHP_FILE + "?name=" + $name_);
            request.contentType = contentType;
            request.method = URLRequestMethod.POST;
            request.data = byteArray;
           
            const loader:URLLoader = new URLLoader(request);
            loader.addEventListener(Event.COMPLETE, loadResultHandler);
        }
       
       
        /*------------------------------------
            Event Functions
        ------------------------------------*/

       
        private function loadResultHandler(info:Event):void {
            info.target.removeEventListener(Event.COMPLETE, loadResultHandler);
            var urlvars:URLVariables = new URLVariables(info.target.data);
            _filename = _FOLDER_FILE + "/" + urlvars.filename;
           
            dispatchEvent(new Event(EVENT_COMPLETE_SAVING));
        }
       
       
    }
}

PHP imgEncoder.php file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) {
    //$fullFilePath = dirname(__FILE__) . "/" . $_GET['name'];
    $fullFilePath = $_GET['name'];
   
    $handle = fopen($fullFilePath,"w");
    fwrite($handle, $GLOBALS["HTTP_RAW_POST_DATA"]);
    fclose($handle);
   
    echo "result=1&filename=" . $fullFilePath;
} else {
    echo 'result=0';
}
?>

Source file here

Edit 14.09.2009
Flash video Player Snapshot