среда, 30 января 2008 г.

Сохранить MovieClip как SWF файл на сервере.

Взято с forum.vingrad.ru/
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.utils.ByteArray;
var ByteLoader:URLLoader;
var ByteConverter:Loader;
var ByteConverter2:Loader;
var FileRequest:URLRequest;
var ba:ByteArray = new ByteArray;
function convert(event:Event)
{
//function BytesExample (event:Event) {
ByteLoader = new URLLoader();
ByteLoader.dataFormat = URLLoaderDataFormat.BINARY;
ByteLoader.addEventListener (Event.COMPLETE, onBytesLoaded);
FileRequest = new URLRequest ("mov.swf");
ByteLoader.load (FileRequest);
//}
function onBytesLoaded (evt:Event)
{
ByteConverter = new Loader();
ByteConverter.contentLoaderInfo.addEventListener (Event.COMPLETE, onConvertFinished);
ByteConverter.loadBytes (ByteLoader.data);
ba.writeBytes(ByteLoader.data);
//urla
var url_req:URLRequest = new URLRequest("http://127.0.0.1/img_create.php");
url_req.data = ba;
url_req.method = URLRequestMethod.POST;
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
url_req.requestHeaders.push(header);
navigateToURL(url_req, "png");
}
function onConvertFinished (evt:Event)
{
var mc = ByteConverter.content;
trace (ba);
mc.x = 0;
mc.y = 0;
mc.alpha = .75;
addChild (mc);
}
}
bt.addEventListener(MouseEvent.CLICK, convert);





header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$image_data = $GLOBALS["HTTP_RAW_POST_DATA"] ;
$filename_to_save = "avatar.swf";
if(isset($image_data)){
$png_file = fopen($filename_to_save, "wb") or die("File not opened!");
if($png_file){
set_file_buffer($png_file, 20);
fwrite($png_file, $image_data);
fclose($png_file);
}
}

echo("
");
?>

четверг, 24 января 2008 г.

Интерпритатор для SSAS (Server-Side ActionScript)

Как то раньше не задумывался, а оказывается что SSAS родной брат JavaScript 1.5.
FlashCom Server использует Mozilla Spidermonkey JavaScript 1.5 интерпритатор.

Вместо main.asc можно писать main.js

Горы книжек! Всем учить китайский!

Куча книжек по флеш технологии на китайском форуме
http://www.itpub.net/search.php?searchid=1117&orderby=lastpost&ascdesc=desc&searchsubmit=yes

среда, 23 января 2008 г.

Параметр snapshotMilliseconds

У метода NetStream.attachCamera() есть интересный опциональный параметр snapshotMilliseconds
public function attachCamera(theCamera:Camera, snapshotMilliseconds:int = -1):void 

Если установить его значение 0, то проигрывающий этот поток будет видеть "снэпшот".
Можно реализовать камеру наблюдения, которая будет записывать видео кусочками по 0.1 секунде, каждые 5 секунд
...
intervalID = setInterval(captureFrame, 5000);
function captureFrame ( ) {
out_ns.attachCamera(cam, 100);
out_ns.publish(streamName, "append");
}
...

понедельник, 14 января 2008 г.

Заготовка для прелоадера

Любая флешка начинается с прелоадера (Если, конечно не лень его делать-)). Я использую такую заготовку:
package {
import flash.display.Sprite;
import flash.events.Event;
import main.Preloader;
public class Game extends Sprite {

public function Game() {

var preloader:Preloader = new Preloader();
addChild(preloader);
preloader.addEventListener("loadComplete", onLoadComplete);
}

private function onLoadComplete(e:Event):void {
trace("Documet class: Load Complete")
}
}
}

package main {
import flash.display.Sprite;
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.text.TextField;

public class Preloader extends Sprite {

private var myText:TextField;

public function Preloader() {
this.myText = new TextField();
this.addChild(myText);
myText.text = "Loading ..."
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}

private function onEnterFrame(e:Event):void {
if (this.stage != null) {
var loaded:Number = stage.loaderInfo.bytesLoaded;
var total:Number = stage.loaderInfo.bytesTotal;
trace("loaded = "+loaded);
trace("total = " + total);

if (loaded == total) {
this.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
this.dispatchEvent(new Event("loadComplete"));
}
}
}

}
}

Как добавить экземпляр класса подгружаемого мувика

Пусть есть флешка library.swf и в её библиотеке есть мувик связанный с классом MC
(Свойства, галочка Экспорт для ActionScript)
Есть другая флешка loader.swf которая подгружает флешку library.swf.

package {
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;

public class loader extends Sprite {
var e:Event;
var a:ApplicationDomain;
public function loader() {
var url:URLRequest = new URLRequest("library.swf");
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
l.load(url);
}

private function onLoadComplete(e:Event) {
trace("loaded");
var currentClass:Class = e.target.applicationDomain.getDefinition("MC") as Class;
var s:Sprite = new currentClass();
addChild(s);

var s2:Sprite = new currentClass();
addChild(s2);

s2.x = 50;
s2.y = 50;
}
}
}


На сцене подгружающей флешки появились два мувика из подргуженной.
Круть -)))

четверг, 10 января 2008 г.

Wowza Media Server подешевел

Одной из алтернатив FMS и Red5 является Wowza Media Server.
Решил посмотреть по-подробнее что сие такое. Обратил внимание на то как резко изменилась цена на Pro Unlimited edition.
Год назад она стоила $5000
А теперь $995
Видимо не велик спрос -) Red5 скоро и FMS подъест.

среда, 9 января 2008 г.

Top4Top

Новый портал реализованный полностью на флеше Top4Top
На блоге у Роста разразилось крупномасштабное сражение

Лично мое мнение: Если идея более-менее (хотя 10001 веловипед чего и не сделать то), то реализация очень хреновая, все какое-то угловатое, разнородные прелоадеры то там то тут жужжащие вызывают панику и желание скорее убраться на нормальный HTML сайт

Совершенно согласен с этим комментарием:

Так вот: я не мог находиться на сайте больше 5 минут из за совершенно некомфортного ощущения тормознутости и наказывания ожиданием за любой клик.

понедельник, 7 января 2008 г.

FullScreen mode в браузере

Уже слышал ранее, но только сейчас возникла необходимость использовать полноэкранный режим флэш-плагина. Впечатляющее зрелище, когда флешка открывается из маленького баннерка на весь экран.
FullScreen по-русски на Flash
FullScreen по-английски на Flex

среда, 2 января 2008 г.

Pure MVC

Пока Рост пишет странные сообщения о медитации на тему фреймворка Pure MVC и продолжает какие-то "тривиально неполезные" описания и обещает выложить пример использования...
Один из авторов книги ActionScript 3.0 Design Patterns (O'Reilly, 2007) в своем блоге выложил минимальный пример и детально описал принцип его работы в контексте фреймворка

Как сохранять видео с youtube.com ?

Очень просто. Установить плагин для FF от Sothink. В комплекте есть еще проигрыватель FLV