1. http://lifeflash.shaggysmile.com/
  2. http://lifeflash.shaggysmile.com/about/
  3. http://lifeflash.shaggysmile.com/category/2pub/
  4. http://lifeflash.shaggysmile.com/contact/
  5. http://lifeflash.shaggysmile.com/flex/2007/09/05/ribbit_phone_component/
  6. http://lifeflash.shaggysmile.com/2links/2007/09/26/blog_money2/
  7. http://lifeflash.shaggysmile.com/flashcs3/2007/05/16/flash8-and_vista/
  8. http://lifeflash.shaggysmile.com/2links/2007/05/21/flashcs3_books_with_amazone/
  9. http://lifeflash.shaggysmile.com/2links/2007/05/21/getting_started_with_actionscript_cs3/
  10. http://lifeflash.shaggysmile.com/flex/2007/05/22/flex_component_kit_for_flash_cs3/
  11. http://lifeflash.shaggysmile.com/flex/2007/05/28/flex_explorers/
  12. http://lifeflash.shaggysmile.com/vista/2007/05/29/windows_vista_sidebar_and_flashplatform/
  13. http://lifeflash.shaggysmile.com/2links/2007/06/04/swf2xaml_and_xaml/
  14. http://lifeflash.shaggysmile.com/flex/2007/06/05/about_flex3/
  15. http://lifeflash.shaggysmile.com/flex/2007/06/18/youtuberemixer/
  16. http://lifeflash.shaggysmile.com/flex/2007/06/27/flex_win_silverlight/
  17. http://lifeflash.shaggysmile.com/air/2007/07/02/adobe%c2%ae-air-extension-for-flash-cs3/
  18. http://lifeflash.shaggysmile.com/air/2007/07/03/creating_air_p_in_flash_cs3/
  19. http://lifeflash.shaggysmile.com/air/2007/07/04/air-iphone/
  20. http://lifeflash.shaggysmile.com/flex/2007/07/13/flex_3_beta2/
  21. http://lifeflash.shaggysmile.com/2pub/2007/07/30/sflex_debugger_console/
  22. http://lifeflash.shaggysmile.com/flex/2007/08/01/data_grid_feature/
  23. http://lifeflash.shaggysmile.com/2links/2007/08/06/addrequestheader_in_flash/
  24. http://lifeflash.shaggysmile.com/2news/2007/08/22/flash_player_update_h254/
  25. http://lifeflash.shaggysmile.com/2links/2007/08/23/solved-right-click-in-as3/
  26. http://lifeflash.shaggysmile.com/2news/2007/08/24/one_love/
  27. http://lifeflash.shaggysmile.com/2news/2007/08/27/asv5_as_otf_convertor/
  28. http://lifeflash.shaggysmile.com/2links/2007/08/30/bukakusa_ru/
  29. http://lifeflash.shaggysmile.com/2news/2007/08/31/flashdevlop_beta3_release/
  30. http://lifeflash.shaggysmile.com/air/2007/08/31/air_filter_explorer/
  31. http://lifeflash.shaggysmile.com/flex/2007/08/31/fillcolors/
  32. http://lifeflash.shaggysmile.com/2news/2007/08/31/2355270000-flash-player-9-installs-at/
  33. http://lifeflash.shaggysmile.com/2news/2007/09/03/fdt3_in_beta/
  34. http://lifeflash.shaggysmile.com/2news/2007/09/05/flash_player_june_stat/
  35. http://lifeflash.shaggysmile.com/2pub/2007/09/07/fms3_faq/
  36. http://lifeflash.shaggysmile.com/silverlight/2007/09/11/hdvideo_flash_or_silverlight/
  37. http://lifeflash.shaggysmile.com/2links/2007/09/19/blog_money/
  38. http://lifeflash.shaggysmile.com/2links/2007/09/21/flash_surface/
  39. http://lifeflash.shaggysmile.com/2news/2007/09/25/flash_ripper_brithday/
  40. http://lifeflash.shaggysmile.com/2links/2007/09/27/new_blogs/
  41. http://lifeflash.shaggysmile.com/2news/2007/09/28/yahoo_1000000_troyans/
  42. http://lifeflash.shaggysmile.com/flex/2007/10/01/flex_3_beta_2_and_air_beta_2/
  43. http://lifeflash.shaggysmile.com/2news/2007/10/01/flash_lite3_release/
  44. http://lifeflash.shaggysmile.com/2pub/2007/10/01/seo_plus_friends_and_more_plus/

Неделя Flash Lite 3 - Flash Lite приложение, которое загружает видео с YouTube.

Для flash-разработчиков не является секретом процесс загрузки FLV в Flash Player.
В этом уроке мы рассмотрим приложение, которое загружает FLV видео с сервиса YouTube используя Flash Lite 3.

Одна из проблем, для многих - это “псевдо-защита” от загрузки FLV файлов с YouTube. Но это не проблема. Небольшой грамматический разбор и FLV-видео у вас “в кармане”.

Автор: Rosario Conti (Оригинал статьи)
Вольный перевод: SHAGGYSMILE

Что для этого нужно:

Flash CS 3 Professional.
Flash Lite 3 player.
• Сервер с поддержкой PHP.
Исходники к статье.
• И нужно быть знакомым с ActionScript 2 и PHP.

Создаем приложение

Приступим. Для начала нам необходимо создать FLA-файл и несколько слоев:
1. Откройте Flash CS 3 Professional, создайте новый файл и назовите его Youtubev2.fla
2. Создайте пять слоев: over, text, buttons, actionscript, и BG.

Кадр первый: Создание интерфейса

1. Создайте кнопку и назовите ее avanti.
2. Далее, дадим нашему плееру имя. Создаем текстовый поле и пишем YouTubePlayer.

fig011.jpg

3. В слое actionscript вставьте следующих код. Не забудьте поменять ссылки http://yourserver.com/leggi.php и http://yourserver.com/get.php на адрес вашего сервера.

stop();

var TIMER = 0;
var searchedW:String = "adobe";
var scelto = "";

var nc:NetConnection = new NetConnection();
nc.connect((null));
var ns:NetStream = new NetStream(nc);

//Forward Button
avanti.onRelease = function() {
	createArea();// To create the video list area
	nextFrame();
};

function createArea() {
	//---Font Format
	var my_fmt:TextFormat = new TextFormat();
	my_fmt.bold = false;
	my_fmt.font = "Arial";
	my_fmt.size = 8;
	my_fmt.color = 0xFFFFFF;

	for (i=0; i<14; i++) {

		createEmptyMovieClip("but"+i,_root.getNextHighestDepth());
		eval("but"+i).beginFill(0xFF0000,80);
		eval("but"+i).moveTo(0,0);
		eval("but"+i).lineTo(100,0);
		eval("but"+i).lineTo(100,10);
		eval("but"+i).lineTo(0,10);
		eval("but"+i).lineTo(0,0);
		eval("but"+i).endFill();
		eval("but"+i)._x = 2;
		eval("but"+i)._y = (i*11);
		eval("but"+i).createTextField("label",this.getNextHighestDepth(),0,-2,100,12);
		eval("but"+i).label.setNewTextFormat(my_fmt);
		eval("but"+i).onRelease = function() {
			scelto = files[this._name.substr(3, 1)];
			getN.load("http://yourserver.com/get.php?v="+scelto);
			searchedW = cercastr.text;
		};
		eval("but"+i).label.text = filetime[i]+" - "+filedesc[i];
	}
}

files = new Array();
filedesc = new Array();
filetime = new Array();

lv = new LoadVars();
lv.contentType = "text/plain";
lv.onLoad = function() {
	fl = this.filelist;
	files = fl.split(",");
	c = files.length-1;

	fl = this.filedesc;
	filedesc = fl.split(",");

	fl = this.filetime;
	filetime = fl.split(",");

	c = 14;

	for (i=0; iundefined) {
			eval(”but”+i).label.text = filetime[i]+” - “+filedesc[i];
		} else {
			eval(”but”+i).label.text = “”;
		}
	}
};

lv.load(”http://yourserver.com/leggi.php?cerca=”+cercastr.text);

Примечание переводчика: А я б заменил код eval("but" + i) на this["but" + i]. Не люблю eval :)

Кадр второй: Добавляем свой фон и возможность поиска

1. Здесь (во втором кадре) вы можете добавить любой фон, на ваш вкус.
2. Также добавьте кнопку cerca и текстовое input-поле, которое будет выступать в качестве поискового.

fig021.jpg

3. Собственно код в слое actionscript:

stop();

var c:Number=0;
cercastr.text= searchedW;        

linkaggio = new Array();
getN = new LoadVars();
getN.contentType = "text/plain";
getN.onLoad = function(success) {
  fl = this.t;
  linkaggio = fl.split(",");
  hideM();
  TIMER = setInterval(updateOutput, 10);
  nextFrame();
}; 

function updateOutput()
{
  tempobuf.text = ns.bufferTime;
  riman.text = ns.bufferLength;;
}

function hideM()
{
  for (g=0; g < 14; g++) {
                  eval("but" + g)._visible= false;
  }
}

cerca.onRelease = function() {
 _root.lv.load("http://yourserver.com/leggi.php?cerca=" + cercastr.text);
}

Кадр третий: Добавляем объект Video

1. Добавляем объект Video на сцену и называем его video1.
2. Добавляем кнопку, называем indietro и два текстовых поля tempobuf и riman, где tempobuf показывает время буферизации, а riman статус буферизации.
3. Также добавляем кнопку indietro, при нажатии на которую, будут выводится результаты поиска.

fig031.jpg

4. Код в четвертом кадре, слоя actionscript:

var af:String= "http://www.YouTube.com/get_video?video_id=" + scelto +"&t=" + linkaggio[0];

video1.attachVideo(ns);
ns.setBufferTime(20);
ns.play(af,-2,0);

ns.onStatus = function(iObj:Object) {
  //ns.setBufferTime(5);
  trace(iObj.code);
  switch (iObj.code) {
   case "NetStream.Buffer.Full":
                  ns.setBufferTime(5);
                  tempobuf.text=2;
                  break;
   case "NetStream.Buffer.Empty":
                  ns.setBufferTime(20);
                  tempobuf.text=5;
                  break;
  case "NetStream.Play.StreamNotFound": 

                  ns.close();
                  clearInterval(TIMER);
                  showM()
                  prevFrame();
                  break;
  }

}

indietro.onRelease = function() {
  clearInterval(TIMER);
  ns.close();
  showM()
  prevFrame();

}

function showM() {
  for (g=0; g < 14; g++) {
                  eval("but" + g)._visible= true;
  }
}

“Grabbing” YouTube ID
Займемся серверной частью. У нас есть два php-файла - get.php и leggi.php (эти файлы вы найдете в исходнике)
leggi.php - использует для чтения и парсит vID, описание и время, т.е. те параметры, которые отображаются в результатах поиска, сгенерируемые YouTube. Как только вы выбираете видео, vID передается файлу get.php, кторый вернет параметр tID с точным путем на FLV-файл.

Как это работает смотрите в исходниках. В конечном итоге наше приложение будет выглядеть так:

fig04.gif

Последний этап - это тестирование и симулирование нашего приложения на мобильном устройстве, но об этом мы уже писали.






















2007 (с) shaggysmile.com

1