Теперь у меня есть персональная страница на Я.ру — Alexsas!
Это новый сервис Яндекса, который сейчас проходит ограниченное тестирование и регистрация в нём пока доступна только по приглашениям.
среда, 31 октября 2007 г.
Я.ру
воскресенье, 21 октября 2007 г.
Урок as3: Знакомство с XML – продолжение.
На чем мы остановились? Ах да… мы вывели наш xml в Output
Ну что ж продолжим.
Сейчас мы будем работать только с 19-ой строчкой, где у нас trace – весь остальной код будет без изменений.
Давайте в trace напишем вот такую конструкцию:
trace(xmlData.kniga);
и снова контрол-энтер. Смотрите, что получилось – в Output вышли все ноды kniga.
Теперь давайте посмотрим на вот это trace(xmlData.kniga.name)
Я думаю, что смысл понятен. Мы научились добираться до нодов.
Едем дальше.
Вы наверное заметили, что ноды name и author имеют в себе текст.
Как же добраться до него?
Очень даже просто: trace(xmlData.kniga.name.text())
Попробуйте…
Удивлены? Да. Результат немного не тот который вы ожидали:
МауглиМаленький принцСталкер
Весь наш текст нодов прилип друг к другу. Все правильно флэшовый парсер (страшное слово) не встретил ни одно символа Enter и написал все в строчку. Мы с этим справимся, но чуть позже.
Давайте взглянем лучше вот, что: trace(xmlData.kniga.name.text()[0]);
Интересно, не правда ли? Вышло имя первой книги.
Соответственно, что имя второй мы можем узнать, если вместо нолика напишем единичку.
На заметку: порядковые номера элементов в массиве начинаются не с 1 а с 0. То есть первый элемент будет [0], второй – [1] и так далее.
Пришло пора вмешаться в основной код нашего класса, а именно функции, сейчас она выглядит так:
function LoadXML(event:Event):void {
xmlData = new XML(event.target.data);
trace(xmlData);
}В AS3 появился класс XMLList – сейчас я покажу как он работает.
Есть еще одна удивительная штука это цикл for each он переберает не названия элементов а их значения… продемонструю.
Для начала давайте создадим список наших названий книг.
function LoadXML(event:Event):void {
xmlData = new XML(event.target.data);
var nameList:XMLList = xmlData.kniga.name;
trace(nameList);
}
Круто, да?
А теперь с помощью for each переберем все данные в этом списке:
function LoadXML(event:Event):void {
xmlData = new XML(event.target.data);
var nameList:XMLList = xmlData.kniga.name;
for each (var nameEl:XML in nameList) {
trace (nameEl);
}
Жмем контрол-энетр. О чудо!!! Полнейшая крутизна!
Что еще мы можем?
О! Наши возможности безграничны.
Но, давайте поговорим о детях. Помните, был такой разговор в первом уроке?
Что у НОДОВ могут быть (или не быть) дети. Припоминайте.
Так вот, чтобы узнать, сколько у НОДа деток – существует свойство children();
(держите перед глазами свой XML – так будет легче понимать, о чем речь)
Создаем XML-список всех детей НОДА kniga:
var knigaChildren:XMLList = xmlData.kniga.children();
А теперь переберем всю информацию содержащуюся в каждом их этих детей.
Вот как станет выглядеть наша функция… Проверьте.
function LoadXML(event:Event):void {
xmlData = new XML(event.target.data);
var knigaChildren:XMLList = xmlData.kniga.children();
for each (var knigaInfo:XML in knigaChildren) {
trace(knigaInfo);
}
Все зашибись. И радости нет предела.
Если хотите посмотреть все имена нодов, то вот: trace(knigaInfo.name());
На сегодня, все... ждем продолжения и незабываем...
четверг, 18 октября 2007 г.
Урок AS3: Знакомимся с XML
Знакомимся с XML.
Сегодня будем знакомиться с XML и работой с ним в ActionScript 3.0 (далее AS3).
Зачем нам XML? Ответ прост – это удобный обмен данными между сервером и клиентом – раз. Это удобный обмен данными вообще – два. И это просто удобно – три.
XML уже используется повсюду и везде, давайте и мы не будем отставать.
Что такое XML?
Ну, чтобы совсем понятно было - это почти HTML только попроще.
Принцип XML весьма прост: Открываем тэг, пишем текст, закрываем тэг. И все.
Вот пример:
Тэги здесь в отличии от HTML могут быть любыми какими только пожелаете.
Еще тэги могут иметь атрибуты. А атрибуты должны иметь значения.
Открытый и закрытый тэги – вместе образуют НОД. В общем-то из нодов и состоит XML.
Давайте еще один пример рассмотрим:
У каждого нода могут быть дети, а может их и не быть.
У первого нода «polka» три «ребенка» - ноды “kniga”.
У нодов “kniga” по два «ребенка» - «name» и «author».
А эти два нода никаких детей не имеют. Зато в себе имеют какую-то информацию. Но об этом позже.
Запомните: ноды должны иметь начало polka и обязательно иметь конец /polka.
Теперь давайте от теории перейдем к практике.
Создайте у себя где-нибудь папку с вот таким, например именем: My_First_XML (программисты пробелами не пользуються! :-)
Теперь открываем всеми самый любимый и стабильный продукт Била Гейтса - Блокнот.
Туда с помощью нехитрого приема «набора ручками» вставляем нашу «полку»:
И сохраняем под именем polka.xml в нашу свежую папку.
Мы создали xml-файл.
Теперь запускаем многоуважаемый Flash CS3. Жмем NEW и выбираем Fash File (ActionScript 3.0)
Сразу же сохраняем вот под таким каким-нибудь именем: my_xml.fla
Идем в Properties и в Document class пишем имя нашего будущего класса, который будет грузить XML.
И имя ему мы дадим: xml_loader.
Опять жмем NEW и выбираем ActionScript file.
И сохраняем его туда же под этим незамысловатым именем: xml_loader.
Вот теперь начнется самое интересное.
Будем писать класс.
Начинаеться все как обычно для AS3 со слова:
package {
}
Что мы и вбиваем в наш xml_loader
Далее нам надо подгрузить те классы, которые как мы думаем, будут участвовать у нас в процессе. А это вот такой не слабый набор:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.xml.XMLDocument;
}
Я сейчас не буду вдаваться в подробности, как определять и узнавать какие классы надо грузить. Все это придет с опытом.
Теперь нам надо обозначить наш класс.
Для этого мы добавляем строчку: public class xml_loader extends Sprite {
Но просто пустой класс нам не нужен, поэтому мы еще добавим конструктор. Тобишь функцию с таким же названием как и класс: public function xml_loader() {
И весь код нашей программки будет выглядеть теперь так:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.xml.XMLDocument;
public class xml_loader extends Sprite {
public function xml_loader() {
}
}
}
}
Сохранитесь и нажмите контрол-энтер.
Ничего не произошло?
Посмотрите в окошке Output тоже – ничего? Значит мы правильно все сделали.
А на самом деле мы еще ничего полезного не сделали. Но у нас есть класс.
Что же теперь приступим к более полезным вещам.
AS3 строго типизированный язык, причем объектно-ориентированный и это очень важно.
Создаем обьект xmlLoader как загрущик урла. (хе-хе)
var xmlLoader:URLLoader = new URLLoader();
Теперь наша переменная xmlLoader может в себя что-либо грузить.
Еще надо создать обьект для нашего XML, чтобы его туда положить:
var xmlData:XML = new XML();
Теперь к нашему xmlLoader надо «подключить слушателя», который нам даст знать, что XML загружен:
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
Event.COMPLETE – это событие которое ждет слушатель. (в данном случае это удачная загрузка)
LoadXML – это имя функции, которая вызовется, после того как слушатель услышит требуемое событие.
В общем если файл загрузиться то сработает. Нет. На нет и суда нет.
Далее.
xmlLoader.load(new URLRequest("polka.xml"));
Этой строчкой мы говорим нашему xmlLoader грузить файл polka.xml
(так как наш swf и наш xml лежат в одной папке, то никаких путей и адресов указывать ненадо)
И вот собственно функция LoadXML
function LoadXML(event:Event):void {
xmlData = new XML(event.target.data);
trace(xmlData);
}
Я немного расшифрую.
LoadXML(event:Event) - В эту нашу функцию передается событие, вызвавшее функцию. Простите за тавтологию, но это так.
xmlData = new XML(event.target.data) - В объект xmlData передается новый загруженный XML.
Любое событие вызвано каким-то объектом и этот объект можно узнать вот так: event.target.
А данные, которые содержит этот объект можно узнать так: event.target.data.
Ну и выводим:
trace(xmlData);
Общий код документа выглядит так:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.xml.XMLDocument;
public class xml_loader extends Sprite {
public function xml_loader() {
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("polka.xml"));
function LoadXML(event:Event):void {
xmlData = new XML(event.target.data);
trace(xmlData);
}
}
}
}
Сохраняем и жмем контрол-энтер.
Ура!!!!
Наш xml появился в Output.
На сегодня это все.
В следующей статейке я поведаю как с этим добром обходиться.
Удачи и встретимся на пляже.
среда, 17 октября 2007 г.
Урок AS3: Рисуем шедевральную абстракцию
Всё как всегда.
Создаем новый fla документ. Сохраняем его под произвольным именем.
Создаем новый as документ. Сохраняем его под именем Test.as и пишем туда код:
package {
import flash.display.MovieClip;
public class Test extends MovieClip {
public function Test() {
var bgColor:int = 0xff0000;
var size:int = 400;
var count:int = 300;
graphics.beginFill(bgColor);
for( var i:int=0; i<=count; i++){
graphics.lineTo( Math.floor(size*Math.random()), Math.floor(size*Math.random()));
}
graphics.endFill();
}
}
}
В итоге получаеться вот, что:
пятница, 12 октября 2007 г.
Живой PDF

На сайте ByteArray.org я нашол интересную информацию о Alive PDF
Данный API позволит полноценно создавать PDF файлы прямо из flash.
Пример кода:
// create starting document
var myPDFEncoder:PDF = new PDF ( Orientation.PORTRAIT, Unit.MM, Size.A4 );
// add a new page
myPDFEncoder.addPage();
// this will add a snapshot of the canvas Sprite in the PDF with a JPG Compression
// compression level is set to 100 here
myPDFEncoder.addImage (canvas, null , true, ImageFormat.JPG, 100);
// save the pdf
myPDFEncoder.savePDF ( Method.REMOTE, 'http://localhost/pdf/create.php', Download.ATTACHMENT, 'myPDF.pdf' );
Там же вы можете попробовать как это реализовано.
Помоему супер.
Скачать можно тут.
четверг, 11 октября 2007 г.
Рисуем Круглешок и Квадратик
В этом примере я покажу как программно рисовать.
Запускаем Flash CS3.
Создаем новый Flash file (AS3 ).
Сразу же его сохраняем ну например под именем Draw.fla
Тут же идем снова в меню File и создаем ActionScript file опять сразу сохраняем в эту же папку под именем example.as.
Пишем следующий код:
package {
import flash.display.MovieClip;
public class example extends MovieClip{
public var mc1:MovieClip = new MovieClip();
public var mc2:MovieClip = new MovieClip();
public function example() {
//
mc1.graphics.lineStyle(1);
mc1.graphics.beginFill(0xff0000);
mc1.graphics.drawCircle(100,100,50);
addChild(mc1);
//
mc2.graphics.lineStyle(1);
mc2.graphics.beginFill(0xffff00);
mc2.graphics.drawRect(100,100,150,100);
addChild(mc2);
}
}
}
Сохраняем. Возвращаемся в draw.fla и Document class прописываем exampleЖмем ctrl+enter и радуемся красному кружочку и желтому прямоугольничку.
Теперь давайте разберем все по полочкам:
Эти две строчки в классе: обьявление класса, и обьявление конструктора класса. Запомните, что имя класса и имя конструктора (первой функции в вашем классе) и имя файла класса должны быть одинаковыми. Это закон. Иначе будет ошибка.public class example extends MovieClip{public function example() {
Далее:
public var mc1:MovieClip = new MovieClip();
public var mc2:MovieClip = new MovieClip();Обьявляем наши переменные, как мувиклип, тем самым они примут все свойства мувиклипа на себя. Обьявлять переменные нужно до конструктора класса. Тогда эти переменные будут доступны для всех функций в пределах класса. А мы их обьявили еще и публичными, это дасть возможность нам увидеть их и из других классов.Далее мы рисуем наш кружок:
mc1.graphics.lineStyle(1);
mc1.graphics.beginFill(0xff0000);
mc1.graphics.drawCircle(100,100,50);И прямоугольничек:mc2.graphics.lineStyle(1);
mc2.graphics.beginFill(0xffff00);
mc2.graphics.drawRect(100,100,150,100);И незабываем про addChild(); эта функция добавляет наши созданные объекты в список отображаемых объектов.Вот и все. Целью этого примера было показать графический движок AS3 и метод работы с добавлением объектов .
Удачи. И встретимся на пляже!
Советы изучающим ActionScript 3.0
Мой коллега, в блоге My First AS3 Application опубликовал статью Советы изучающим ActionScript 3.0, советы хорошие но для начинающих непонятные. Даже я не все понял.
Но это неотменяет полезность этой статьи.