Flex и RIA блоги



2014-12-17

18:50:03, Скачать флешки, флеш, бесплатные Flash уроки и исходники. Создание сайтов.
С# для AS3 разработчиков. Часть 2: Расширение классов и реализация Интерфейсов

PostImage_600x300

Перевод статьи From AS3 to C#, Part 2: Extending Classes and Implementing Interfaces

Эта статья продолжает серию “C# для AS3 разработчиков“, и сегодня мы рассмотрим устройство классов в C# с точки зрения AS3 разработчика (наследование классов, реализация интерфейсов и наследование интерфейсов).


Начнём с наследования классов. Вот, как это выглядит в AS3:

class Shape
{
}
 
class Circle extends Shape
{
}

А вот, как это выглядить в C#:

class Shape
{
}
 
class Circle : Shape
{
}

Как вы могли заметить, вместо ключевого слова extends, используется : (двоеточие).

Похожим образом обстоят дела с реализацией интерфейсов. Как это выглядит в AS3:

interface IHasArea
{
    function GetArea(): int;
}
 
interface IRound
{
    function GetSmoothness(): int;
}
 
class Shape
{
}
 
class Circle extends Shape implements IHasArea, IRound
{
    function GetArea(): int
    {
        return 33; // TODO рассчитать
    }
 
    function GetSmoothness(): int
    {
        return 44; // TODO рассчитать
    }
}

Та же самая структура кода, но в C#:

interface IHasArea
{
    int GetArea();
}
 
interface IRound
{
    int GetSmoothness();
}
 
class Shape
{
}
 
class Circle : Shape, IHasArea, IRound
{
    int GetArea()
    {
        return 33; // TODO рассчитать
    }
 
    int GetSmoothness()
    {
        return 44; // TODO рассчитать
    }
}

В С#, двоеточие используется вместо ключевого слова implements, по такому же принципу, как и с extends. Описание интерфейсов в C# похоже на описание оных в AS3.

Пример расширения интерфейсов в AS3:

interface ISuper
{
}
 
interface ISub extends ISuper
{
}

Скорее всего, вы уже догадываетесь, как этот код выглядит в C#…

interface ISuper
{
}
 
interface ISub : ISuper
{
}

Давайте разберёмся, как описываются отношения между родительскими и дочерними классами/интерфейсами в C#. В AS3 вы можете использовать ключевые слова this и super в любых не статических функциях, чтобы обратиться к экземпляру текущего класса (this) или к экземпляру родительского класса (super). Например:

class Polygon
{
    var numVertices:uint;
 
    function printDescription(): String
    {
        return "Polygon (numVertices=" + numVertices + ")";
    }
}
 
class Triangle extends Polygon
{
    var color:String;
    var polygonDescriptionAtConstructionTime:String;
 
    function Triangle(color:String)
    {
        this.color = color;
        polygonDescriptionAtConstructionTime = super.printDescription();
    }
 
    function printDescription(): String
    {
        return "Triangle (color=" + color + ")";
    }
}

В данном примере, ключевое слово super обращается исключительно к переменным и функциям класса Polygon. Такой способ обращения к функциям используется крайне редко, но иногда он может помочь избежать в коде двусмысленностей, относительно того, какая из функций printDescription будет вызвана. Если бы в данном примере не использовалось слово super, то вызывалась бы функция printDescription класса Triangle, т.к. поиск в текущем классе происходит раньше родительского класса.

Ключевое слово this обращается исключительно к переменным и функциям класса Triangle. В примере, this используется, чтобы компилятор понимал, что нужно обрщаться к переменной color класса Triangle, а не к одноимённой переменной, передаваемой в конструктор.

А теперь версия на C#:

class Polygon
{
    uint NumVertices;
 
    String PrintDescription()
    {
        return "Polygon (numVertices=" + numVertices + ")";
    }
}
 
class Triangle : Polygon
{
    String Color;
    String PolygonDescriptionAtConstructionTime;
 
    Triangle(String color)
    {
        this.Color = color;
        PolygonDescriptionAtConstructionTime = base.printDescription();
    }
 
    String printDescription()
    {
        return "Triangle (color=" + color + ")";
    }
}

Эти два примера очень похожи, за исключением того, что в C#, вместо ключевого слова super, используется ключевое слово base. В C# base выполняет те же функции, что и super в AS3.

Другой пример использования super в AS3 (вызов родительского конструктора):

class Polygon
{
    var numVertices:uint;
 
    function Polygon(numVertices:uint)
    {
        this.numVertices = numVertices;
    }
}
 
class Triangle extends Polygon
{
    var color:String;
 
    function Triangle(numVertices:uint, color:String)
    {
        super(numVertices);
        this.color = color;
    }
}

C# версия:

class Polygon
{
    uint NumVertices;
 
    Polygon(uint numVertices)
    {
        NumVertices = numVertices;
    }
}
 
class Triangle : Polygon
{
    String Color;
 
    Triangle(uint numVertices, String color)
        : base(numVertices)
    {
    }
}

Помимо того, что мы снова заменили super на base, вы можете заметить, что вызов происходит до выполнения кода в конструкторе (до фигурных скобок {}). Так же, вызову конструктора родительского класса предшествует двоеточие (:). Обратите внимание, что в конце строки вызова, не ставится точка с запятой (;).

Давайте разберём, как в AS3 сделать так, чтобы класс нельзя было расширить:

final class FinalClass
{
}
 
// Этот класс не будет компилироваться
class DerviedClass extends FinalClass
{
}

Похожий функционал в C#:

sealed class FinalClass
{
}
 
// Этот класс не будет компилироваться
class DerviedClass : FinalClass
{
}

В данном случае различия между C# и AS3 состоят только в названии ключевых слов. В C# класс, котоырй нельзя расширить обозначается ключевым словом sealed, а в AS3 для этого используется final, но эффект – абсолютно одинаковый.

В завершении, сравнение описанных особенностей C# и AS3 кода:

////////
// C# //
////////
 
// Interface
interface IShape
{
    String GetDescription();
}
 
// Sub-interface (one that extends another)
interface IPolygon : IShape
{
    uint GetNumEdges();
}
 
// Class
class Shape
{
    String Name;
 
    Shape(String name)
    {
        Name = name;
    }
}
 
// Derived class (one that extends another)
class Circle : Shape
{
    int Radius;
 
    Circle(String name, int radius)
        : base(name)
    {
        Radius = radius;
    }
}
 
// Derived class that also implements an interface
class Triangle : Shape, IPolygon
{
    Triangle()
        : base("Triangle")
    {
    }
 
    uint GetNumEdges()
    {
        return 3;
    }
 
    String GetDescription()
    {
        return "A three-sided polygon";
    }
}
 
// Class that can't be extended
sealed class NoDerivatives
{
}
/////////
// AS3 //
/////////
 
// Interface
interface IShape
{
    function getDescription(): String;
}
 
// Sub-interface (one that extends another)
interface IPolygon extends IShape
{
    function getNumEdges(): uint;
}
 
// Class
class Shape
{
    var name:String;
 
    function Shape(name:String)
    {
        this.name = name;
    }
}
 
// Derived class (one that extends another)
class Circle extends Shape
{
    var Radius:int;
 
    function Circle(name:String, radius:int)
    {
        super(name);
        Radius = radius;
    }
}
 
// Derived class that also implements an interface
class Triangle extends Shape implements IPolygon
{
    function Triangle()
    {
        super("Triangle");
    }
 
    function GetNumEdges(): uint
    {
        return 3;
    }
 
    function GetDescription(): String
    {
        return "A three-sided polygon";
    }
}
 
// Class that can't be extended
final class NoDerivatives
{
}

На этом мы сегодня закругляемся. В следующей статье мы поговорим о геттерах и сеттерах (getter/setter) и закончим описание основ классов. После чего, мы сможем перейти к нюансам C#, аналогов которых нет в AS3.

Запись С# для AS3 разработчиков. Часть 2: Расширение классов и реализация Интерфейсов впервые появилась Flashist.


18:50:03, Скачать флешки, флеш, бесплатные Flash уроки и исходники. Создание сайтов.
С# для AS3 разработчиков. Часть 2: Расширение классов и реализация Интерфейсов

PostImage_600x300

Перевод статьи From AS3 to C#, Part 2: Extending Classes and Implementing Interfaces

Эта статья продолжает серию “C# для AS3 разработчиков“, и сегодня мы рассмотрим устройство классов в C# с точки зрения AS3 разработчика (наследование классов, реализация интерфейсов и наследование интерфейсов).


Начнём с наследования классов. Вот, как это выглядит в AS3:

class Shape
{
}
 
class Circle extends Shape
{
}

А вот, как это выглядить в C#:

class Shape
{
}
 
class Circle : Shape
{
}

Как вы могли заметить, вместо ключевого слова extends, используется : (двоеточие).

Похожим образом обстоят дела с реализацией интерфейсов. Как это выглядит в AS3:

interface IHasArea
{
    function GetArea(): int;
}
 
interface IRound
{
    function GetSmoothness(): int;
}
 
class Shape
{
}
 
class Circle extends Shape implements IHasArea, IRound
{
    function GetArea(): int
    {
        return 33; // TODO рассчитать
    }
 
    function GetSmoothness(): int
    {
        return 44; // TODO рассчитать
    }
}

Та же самая структура кода, но в C#:

interface IHasArea
{
    int GetArea();
}
 
interface IRound
{
    int GetSmoothness();
}
 
class Shape
{
}
 
class Circle : Shape, IHasArea, IRound
{
    int GetArea()
    {
        return 33; // TODO рассчитать
    }
 
    int GetSmoothness()
    {
        return 44; // TODO рассчитать
    }
}

В С#, двоеточие используется вместо ключевого слова implements, по такому же принципу, как и с extends. Описание интерфейсов в C# похоже на описание оных в AS3.

Пример расширения интерфейсов в AS3:

interface ISuper
{
}
 
interface ISub extends ISuper
{
}

Скорее всего, вы уже догадываетесь, как этот код выглядит в C#…

interface ISuper
{
}
 
interface ISub : ISuper
{
}

Давайте разберёмся, как описываются отношения между родительскими и дочерними классами/интерфейсами в C#. В AS3 вы можете использовать ключевые слова this и super в любых не статических функциях, чтобы обратиться к экземпляру текущего класса (this) или к экземпляру родительского класса (super). Например:

class Polygon
{
    var numVertices:uint;
 
    function printDescription(): String
    {
        return "Polygon (numVertices=" + numVertices + ")";
    }
}
 
class Triangle extends Polygon
{
    var color:String;
    var polygonDescriptionAtConstructionTime:String;
 
    function Triangle(color:String)
    {
        this.color = color;
        polygonDescriptionAtConstructionTime = super.printDescription();
    }
 
    function printDescription(): String
    {
        return "Triangle (color=" + color + ")";
    }
}

В данном примере, ключевое слово super обращается исключительно к переменным и функциям класса Polygon. Такой способ обращения к функциям используется крайне редко, но иногда он может помочь избежать в коде двусмысленностей, относительно того, какая из функций printDescription будет вызвана. Если бы в данном примере не использовалось слово super, то вызывалась бы функция printDescription класса Triangle, т.к. поиск в текущем классе происходит раньше родительского класса.

Ключевое слово this обращается исключительно к переменным и функциям класса Triangle. В примере, this используется, чтобы компилятор понимал, что нужно обрщаться к переменной color класса Triangle, а не к одноимённой переменной, передаваемой в конструктор.

А теперь версия на C#:

class Polygon
{
    uint NumVertices;
 
    String PrintDescription()
    {
        return "Polygon (numVertices=" + numVertices + ")";
    }
}
 
class Triangle : Polygon
{
    String Color;
    String PolygonDescriptionAtConstructionTime;
 
    Triangle(String color)
    {
        this.Color = color;
        PolygonDescriptionAtConstructionTime = base.printDescription();
    }
 
    String printDescription()
    {
        return "Triangle (color=" + color + ")";
    }
}

Эти два примера очень похожи, за исключением того, что в C#, вместо ключевого слова super, используется ключевое слово base. В C# base выполняет те же функции, что и super в AS3.

Другой пример использования super в AS3 (вызов родительского конструктора):

class Polygon
{
    var numVertices:uint;
 
    function Polygon(numVertices:uint)
    {
        this.numVertices = numVertices;
    }
}
 
class Triangle extends Polygon
{
    var color:String;
 
    function Triangle(numVertices:uint, color:String)
    {
        super(numVertices);
        this.color = color;
    }
}

C# версия:

class Polygon
{
    uint NumVertices;
 
    Polygon(uint numVertices)
    {
        NumVertices = numVertices;
    }
}
 
class Triangle : Polygon
{
    String Color;
 
    Triangle(uint numVertices, String color)
        : base(numVertices)
    {
    }
}

Помимо того, что мы снова заменили super на base, вы можете заметить, что вызов происходит до выполнения кода в конструкторе (до фигурных скобок {}). Так же, вызову конструктора родительского класса предшествует двоеточие (:). Обратите внимание, что в конце строки вызова, не ставится точка с запятой (;).

Давайте разберём, как в AS3 сделать так, чтобы класс нельзя было расширить:

final class FinalClass
{
}
 
// Этот класс не будет компилироваться
class DerviedClass extends FinalClass
{
}

Похожий функционал в C#:

sealed class FinalClass
{
}
 
// Этот класс не будет компилироваться
class DerviedClass : FinalClass
{
}

В данном случае различия между C# и AS3 состоят только в названии ключевых слов. В C# класс, котоырй нельзя расширить обозначается ключевым словом sealed, а в AS3 для этого используется final, но эффект – абсолютно одинаковый.

В завершении, сравнение описанных особенностей C# и AS3 кода:

////////
// C# //
////////
 
// Interface
interface IShape
{
    String GetDescription();
}
 
// Sub-interface (one that extends another)
interface IPolygon : IShape
{
    uint GetNumEdges();
}
 
// Class
class Shape
{
    String Name;
 
    Shape(String name)
    {
        Name = name;
    }
}
 
// Derived class (one that extends another)
class Circle : Shape
{
    int Radius;
 
    Circle(String name, int radius)
        : base(name)
    {
        Radius = radius;
    }
}
 
// Derived class that also implements an interface
class Triangle : Shape, IPolygon
{
    Triangle()
        : base("Triangle")
    {
    }
 
    uint GetNumEdges()
    {
        return 3;
    }
 
    String GetDescription()
    {
        return "A three-sided polygon";
    }
}
 
// Class that can't be extended
sealed class NoDerivatives
{
}
/////////
// AS3 //
/////////
 
// Interface
interface IShape
{
    function getDescription(): String;
}
 
// Sub-interface (one that extends another)
interface IPolygon extends IShape
{
    function getNumEdges(): uint;
}
 
// Class
class Shape
{
    var name:String;
 
    function Shape(name:String)
    {
        this.name = name;
    }
}
 
// Derived class (one that extends another)
class Circle extends Shape
{
    var Radius:int;
 
    function Circle(name:String, radius:int)
    {
        super(name);
        Radius = radius;
    }
}
 
// Derived class that also implements an interface
class Triangle extends Shape implements IPolygon
{
    function Triangle()
    {
        super("Triangle");
    }
 
    function GetNumEdges(): uint
    {
        return 3;
    }
 
    function GetDescription(): String
    {
        return "A three-sided polygon";
    }
}
 
// Class that can't be extended
final class NoDerivatives
{
}

На этом мы сегодня закругляемся. В следующей статье мы поговорим о геттерах и сеттерах (getter/setter) и закончим описание основ классов. После чего, мы сможем перейти к нюансам C#, аналогов которых нет в AS3.

Запись С# для AS3 разработчиков. Часть 2: Расширение классов и реализация Интерфейсов впервые появилась Flashist.


13:05:06, Flash-ripper.com
Тест для JavaScript-кодера

Харьков. Cтарая, медленно растущая, теплая ламповая компания ищет фронтэндера, способного за три минуты выполнить три пункта этого задания:

Мы требуем:

  • 2 года опыта в разработке веб-клиентов
  • Знание backbone.js и/или knockout.js
  • Умение готовить HTML(5) и CSS3

Присылайте результаты теста и резюме на английском по адресу rostislav.siryk@gmail.com

Этот же пост на FB:

2014-12-15

17:13:29, Скачать флешки, флеш, бесплатные Flash уроки и исходники. Создание сайтов.
С# для AS3 разработчиков. Часть 1: Основы классов

Перевод статьи From AS3 to C#, Part 1: Class Basics

Эта статья поможет разобраться в основах C# тем AS3 разработчикам, которые решили переключиться на Unity, но абсолютно не знакомы с программированием на C#.


Начнём с главного: С# файлы имеют расширение .cs, а не .as как AS3 файлы. Внутри файлов вы найдёте описание классов, из которых состоят приложения (аналогично AS3 файлам). Например, файл MyClass.cs:

class MyClass
{
}

Название классов в C# подчиняется той же конвенции, что и названия классов в AS3: каждое слово в названии класса должно начинаться с большой буквы, остальная часть названия пишется в нижнем регистре. Как вы могли заметить, базовый синтаксис классов в C# такой же, как у классов в AS3.

Теперь давайте добавим переменную:

class MyClass
{
	int X;
}

Определение переменных в C# отличается от AS3. Вместо var x:int, нужно использовать int X. Конвенция названий говорит, что названия переменных должны начинаться с большой буквы.

Давайте посмотрим на функции:

class MyClass
{
	void Foo()
	{
	}
}

Функции в C# так же отличаются от функций в AS3. В C# не используется ключевое слово function, возвращаемый тип данный указывается вначале (а не в конце, как это было в AS3), название функций должно начинаться с большой буквы, исходя из конвенции названий.

Функция с входящими параметрами:

class MyClass
{
	void Foo(int x, int y, int z)
	{
	}
}

Параметры функций, так же, как и в AS3, находятся внутри скобок, но записываются они немного по-другому: вначале тип, потом имя, с пробелом между ними. Конвенция говорит, что названия параметров функций должны начинаться с маленькой буквы.

Как и в AS3, параметры функций могут иметь значения по-умолчанию:

class MyClass
{
	void Foo(int x = 1, int y = 2, int z = 3)
	{
	}
}

Функция-конструктор:

class MyClass
{
	MyClass()
	{
	}
}

Как и в AS3, нам не обязательно указывать тип возвращаемого значения для функций-конструкторов. Вообще-то, у вас не получится указать даже тип данных void, как это можно было сделать в AS3. Так же, для объявления этого типа функций, не используется ключевое слово function.

Вы можете иметь больше одной функции-конструктора, это называется “перегрузка” функций:

class MyClass
{
	MyClass()
	{
	}
 
	MyClass(int x)
	{
	}
 
	MyClass(int x, int y, int z)
	{
	}
}

Перезагрузка так же доступна для других функций:

class MyClass
{
	void Foo()
	{
	}
 
	void Foo(int x)
	{
	}
 
	void Foo(int x, int y, int z)
	{
	}
}

Чтобы компилятор мог определить, какая из функций вызывается, необходимо придерживаться 2 правил. Во-первых, вы не можете иметь 2 функции с одинаковыми параметрами:

class MyClass
{
	void Foo(int x, int y, int z)
	{
		// Какой-то функционал
	}
 
	void Foo(int x, int y, int z)
	{
		// Какой-то другой функционал
	}
}

Это же касается тех функций, вызов которых может выглядеть одинаково, если не будет указан один из параметров по-умолчанию:

class MyClass
{
	void Foo(int x, int y, int z)
	{
		// Какой-то функционал
	}
 
	void Foo(int x, int y, int z, int w = 0)
	{
		// Какой-то другой функционал
	}
}

Во-вторых, вы не можете “перегружать” функции по типу данных, который они возвращают:

class MyClass
{
	int Foo(int x, int y, int z)
	{
		return 0;
	}
 
	uint Foo(int x, int y, int z)
	{
		return 0;
	}
}

Придерживаясь этих двух простых правил, вы сможете “перегружать” функции, сколько ваша душа пожелает =)

Как и в AS3, для определения статических функций необходимо добавить ключевое слово static:

class MyClass
{
	static void Foo()
	{
	}
}

То же самое со статическими переменными:

class MyClass
{
	static int X;
}

Теперь, когда мы знаем, как внутри классов определять классы, переменные, функции и конструкторы, давайте рассмотрим как использовать их:

void SomeCode()
{
	// Вызов конструктора по-умолчанию (например, без входящих параметров)
	MyClass mc = new MyClass()
 
	// Вызов другого конструктора
	mc = new MyClass(5);
 
	// Вызов функции
	mc.Foo();
 
	// Вызов перегруженной функции
	mc.Foo(1, 2, 3);
 
	// Вызов статической функции
	MyClass.Foo();
 
	// Получение значения переменной
	mc.X;
 
	// Установка значения переменной
	mc.X = 1;
 
	// By the way, single-line comments are the same...
	// Кстати, однострочные комментарии работают так же, как и в AS3...
 
	/*
	... многострочные комментарие тоже.
	*/
}

Всё это очень похоже на AS3. Обратите внимание, что локальная переменная mc начинается с маленькой буквы, как и параметры функций.

Давайте обсудим модификаторы доступа. Стандартные модификаторы public, private и protected имеют такой же синтаксис и такое же поведение, как и в AS3. Для их использования достаточно просто добавить их перед возвращаемым типом данных функции, типом переменной или ключевым словом class:

public class MyClass
{
	private int X;
 
	protected void Foo()
	{
	}
}

В C#, как и в AS3, существует модификатор доступа internal, который имеет такое же название, но немного другое поведение (по-сравнению с AS3). В AS3 модификатор internal означает “доступно для текущего класса и других классов в текущем пакете”. В C# он означает “доступно для текущего класса и остальных классов в текущей сборке”. Я расскажу про понятие “сборки” в других статьях, но пока что, думайте о них, как о группе классов, собранных в одном бинарном файле.

Так же, в C# есть модификатор protected internal, который является комбинацией protected и internal.

В завершении, сравнение описанных особенностей C# и AS3 кода:

////////
// C# //
////////
 
/////////////////
// Declaration //
/////////////////
 
// Class
public class MyClass
{
	// Field variable
	public int X;
 
	// Class variable
	static public int Y;
 
	// Default constructor
	public MyClass()
	{
	}
 
	// Overloaded constructor
	public MyClass(int x)
	{
	}
 
	// Instance function
	public void Foo()
	{
	}
 
	// Overloaded instance function
	public void Foo(int x)
	{
	}
 
	// Class function
	static public void Goo()
	{
	}
 
	// Overloaded class function
	static public void Goo(int x)
	{
	}
}
 
///////////
// Usage //
///////////
 
// Call the default constructor
MyClass mc = new MyClass()
 
// Call a different constructor
mc = new MyClass(5);
 
// Call an instance function
mc.Foo();
 
// Call an overloaded instance function
mc.Foo(1);
 
// Call a static function
MyClass.Goo();
 
// Call an overloaded static function
MyClass.Goo(1);
 
// Get an instance variable
mc.X;
 
// Set an instance variable
mc.X = 1;
 
// Get a class variable
MyClass.Y;
 
// Set a class variable
MyClass.Y = 1;
 
// Single-line comment
 
/*
Multi-line comment
*/
/////////
// AS3 //
/////////
 
/////////////////
// Declaration //
/////////////////
 
// Class
public class MyClass
{
	// Field variable
	public var x:int;
 
	// Class variable
	static public var y:int;
 
	// Default constructor
	public function MyClass()
	{
	}
 
	// Overloaded constructor
	// {not supported}
 
 
 
	// Instance function
	public function foo(): void
	{
	}
 
	// Overloaded instance function
	// {not supported}
 
 
 
	// Class function
	static public function goo(): void
	{
	}
 
	// Overloaded class function
	// {not supported}
 
 
}
 
///////////
// Usage //
///////////
 
// Call the default constructor
var mc:MyClass = new MyClass()
 
// Call a different constructor
mc = new MyClass(5);
 
// Call an instance function
mc.foo();
 
// Call an overloaded instance function
// {not supported}
 
// Call a static function
MyClass.goo();
 
// Call an overloaded static function
// {not supported}
 
// Get an instance variable
mc.x;
 
// Set an instance variable
mc.x = 1;
 
// Get a class variable
MyClass.y;
 
// Set a class variable
MyClass.y = 1;
 
// Single-line comment
 
/*
Multi-line comment
*/

Этим завершается первая часть цикла статей “С# для AS3 разработчиков”. Следующие статьи будут касаться более сложных тем, включая такие особенности C#, аналоги которых не существуют в AS3.

Оставайтесь на связи!

Запись С# для AS3 разработчиков. Часть 1: Основы классов впервые появилась Flashist.


17:13:29, Скачать флешки, флеш, бесплатные Flash уроки и исходники. Создание сайтов.
С# для AS3 разработчиков. Часть 1: Основы классов

  PostImage_600x300

Перевод статьи From AS3 to C#, Part 1: Class Basics

Эта статья поможет разобраться в основах C# тем AS3 разработчикам, которые решили переключиться на Unity, но абсолютно не знакомы с программированием на C#.


Начнём с главного: С# файлы имеют расширение .cs, а не .as как AS3 файлы. Внутри файлов вы найдёте описание классов, из которых состоят приложения (аналогично AS3 файлам). Например, файл MyClass.cs:

class MyClass
{
}

Название классов в C# подчиняется той же конвенции, что и названия классов в AS3: каждое слово в названии класса должно начинаться с большой буквы, остальная часть названия пишется в нижнем регистре. Как вы могли заметить, базовый синтаксис классов в C# такой же, как у классов в AS3.

Теперь давайте добавим переменную:

class MyClass
{
	int X;
}

Определение переменных в C# отличается от AS3. Вместо var x:int, нужно использовать int X. Конвенция названий говорит, что названия переменных должны начинаться с большой буквы.

Давайте посмотрим на функции:

class MyClass
{
	void Foo()
	{
	}
}

Функции в C# так же отличаются от функций в AS3. В C# не используется ключевое слово function, возвращаемый тип данный указывается вначале (а не в конце, как это было в AS3), название функций должно начинаться с большой буквы, исходя из конвенции названий.

Функция с входящими параметрами:

class MyClass
{
	void Foo(int x, int y, int z)
	{
	}
}

Параметры функций, так же, как и в AS3, находятся внутри скобок, но записываются они немного по-другому: вначале тип, потом имя, с пробелом между ними. Конвенция говорит, что названия параметров функций должны начинаться с маленькой буквы.

Как и в AS3, параметры функций могут иметь значения по-умолчанию:

class MyClass
{
	void Foo(int x = 1, int y = 2, int z = 3)
	{
	}
}

Функция-конструктор:

class MyClass
{
	MyClass()
	{
	}
}

Как и в AS3, нам не обязательно указывать тип возвращаемого значения для функций-конструкторов. Вообще-то, у вас не получится указать даже тип данных void, как это можно было сделать в AS3. Так же, для объявления этого типа функций, не используется ключевое слово function.

Вы можете иметь больше одной функции-конструктора, это называется “перегрузка” функций:

class MyClass
{
	MyClass()
	{
	}
 
	MyClass(int x)
	{
	}
 
	MyClass(int x, int y, int z)
	{
	}
}

Перезагрузка так же доступна для других функций:

class MyClass
{
	void Foo()
	{
	}
 
	void Foo(int x)
	{
	}
 
	void Foo(int x, int y, int z)
	{
	}
}

Чтобы компилятор мог определить, какая из функций вызывается, необходимо придерживаться 2 правил. Во-первых, вы не можете иметь 2 функции с одинаковыми параметрами:

class MyClass
{
	void Foo(int x, int y, int z)
	{
		// Какой-то функционал
	}
 
	void Foo(int x, int y, int z)
	{
		// Какой-то другой функционал
	}
}

Это же касается тех функций, вызов которых может выглядеть одинаково, если не будет указан один из параметров по-умолчанию:

class MyClass
{
	void Foo(int x, int y, int z)
	{
		// Какой-то функционал
	}
 
	void Foo(int x, int y, int z, int w = 0)
	{
		// Какой-то другой функционал
	}
}

Во-вторых, вы не можете “перегружать” функции по типу данных, который они возвращают:

class MyClass
{
	int Foo(int x, int y, int z)
	{
		return 0;
	}
 
	uint Foo(int x, int y, int z)
	{
		return 0;
	}
}

Придерживаясь этих двух простых правил, вы сможете “перегружать” функции, сколько ваша душа пожелает =)

Как и в AS3, для определения статических функций необходимо добавить ключевое слово static:

class MyClass
{
	static void Foo()
	{
	}
}

То же самое со статическими переменными:

class MyClass
{
	static int X;
}

Теперь, когда мы знаем, как внутри классов определять классы, переменные, функции и конструкторы, давайте рассмотрим как использовать их:

void SomeCode()
{
	// Вызов конструктора по-умолчанию (например, без входящих параметров)
	MyClass mc = new MyClass()
 
	// Вызов другого конструктора
	mc = new MyClass(5);
 
	// Вызов функции
	mc.Foo();
 
	// Вызов перегруженной функции
	mc.Foo(1, 2, 3);
 
	// Вызов статической функции
	MyClass.Foo();
 
	// Получение значения переменной
	mc.X;
 
	// Установка значения переменной
	mc.X = 1;
 
	// By the way, single-line comments are the same...
	// Кстати, однострочные комментарии работают так же, как и в AS3...
 
	/*
	... многострочные комментарие тоже.
	*/
}

Всё это очень похоже на AS3. Обратите внимание, что локальная переменная mc начинается с маленькой буквы, как и параметры функций.

Давайте обсудим модификаторы доступа. Стандартные модификаторы public, private и protected имеют такой же синтаксис и такое же поведение, как и в AS3. Для их использования достаточно просто добавить их перед возвращаемым типом данных функции, типом переменной или ключевым словом class:

public class MyClass
{
	private int X;
 
	protected void Foo()
	{
	}
}

В C#, как и в AS3, существует модификатор доступа internal, который имеет такое же название, но немного другое поведение (по-сравнению с AS3). В AS3 модификатор internal означает “доступно для текущего класса и других классов в текущем пакете”. В C# он означает “доступно для текущего класса и остальных классов в текущей сборке”. Я расскажу про понятие “сборки” в других статьях, но пока что, думайте о них, как о группе классов, собранных в одном бинарном файле.

Так же, в C# есть модификатор protected internal, который является комбинацией protected и internal.

В завершении, сравнение описанных особенностей C# и AS3 кода:

////////
// C# //
////////
 
/////////////////
// Declaration //
/////////////////
 
// Class
public class MyClass
{
	// Field variable
	public int X;
 
	// Class variable
	static public int Y;
 
	// Default constructor
	public MyClass()
	{
	}
 
	// Overloaded constructor
	public MyClass(int x)
	{
	}
 
	// Instance function
	public void Foo()
	{
	}
 
	// Overloaded instance function
	public void Foo(int x)
	{
	}
 
	// Class function
	static public void Goo()
	{
	}
 
	// Overloaded class function
	static public void Goo(int x)
	{
	}
}
 
///////////
// Usage //
///////////
 
// Call the default constructor
MyClass mc = new MyClass()
 
// Call a different constructor
mc = new MyClass(5);
 
// Call an instance function
mc.Foo();
 
// Call an overloaded instance function
mc.Foo(1);
 
// Call a static function
MyClass.Goo();
 
// Call an overloaded static function
MyClass.Goo(1);
 
// Get an instance variable
mc.X;
 
// Set an instance variable
mc.X = 1;
 
// Get a class variable
MyClass.Y;
 
// Set a class variable
MyClass.Y = 1;
 
// Single-line comment
 
/*
Multi-line comment
*/
/////////
// AS3 //
/////////
 
/////////////////
// Declaration //
/////////////////
 
// Class
public class MyClass
{
	// Field variable
	public var x:int;
 
	// Class variable
	static public var y:int;
 
	// Default constructor
	public function MyClass()
	{
	}
 
	// Overloaded constructor
	// {not supported}
 
 
 
	// Instance function
	public function foo(): void
	{
	}
 
	// Overloaded instance function
	// {not supported}
 
 
 
	// Class function
	static public function goo(): void
	{
	}
 
	// Overloaded class function
	// {not supported}
 
 
}
 
///////////
// Usage //
///////////
 
// Call the default constructor
var mc:MyClass = new MyClass()
 
// Call a different constructor
mc = new MyClass(5);
 
// Call an instance function
mc.foo();
 
// Call an overloaded instance function
// {not supported}
 
// Call a static function
MyClass.goo();
 
// Call an overloaded static function
// {not supported}
 
// Get an instance variable
mc.x;
 
// Set an instance variable
mc.x = 1;
 
// Get a class variable
MyClass.y;
 
// Set a class variable
MyClass.y = 1;
 
// Single-line comment
 
/*
Multi-line comment
*/

Этим завершается первая часть цикла статей “С# для AS3 разработчиков“. Следующие статьи будут касаться более сложных тем, включая такие особенности C#, аналоги которых не существуют в AS3.

Оставайтесь на связи!

Запись С# для AS3 разработчиков. Часть 1: Основы классов впервые появилась Flashist.


2014-12-09

11:51:10, Flash-ripper.com
Дима Гранецкий — Flash, Unity и Haxe разработчик и математик
Ищу постоянную работу в компании с полной занятостью
Мое резюме: 

Опытный разработчик с сильной математической подготовкой. Планирую переезд в Киев, в связи с этим ищу в Киеве постоянную работу.

Отлично разбираюсь в математике и геометрии. Пишу AGAL-шейдеры и не только. Много работал с 3D как во флэше, так и на Unity3D. Сделал много NDA-проектов для мировых брендов, промо- и игровых сайтов с 3D-графикой, элементами Augmented Reality и потоковым видео.

Отдельно стоит рассказать об отношении к Haxe. На этом языке пишу как обычный код, так и макросы, благодаря поддержке мета-программирования. Реализовал поддержку MXML-подобной нотации со связыванием данных (binding) на чистом Haxe. Написал ряд статей и заметок о Haxe, а также организовал несколько конференций по этой технологии. Поэтому в сообществе Haxe меня знают все — или почти все (а вы знаете, что такое Haxe?)

Контакт:

Сейчас ищу работу в Киеве, предпочитаю haxe или flash/flex (чистый ас3 меня устроит). Хочу делать что-то интереснее, чем онлайн-казино. Если у вас есть предложение работы для меня — свяжитесь со мной через LinkedIn или по этой почте.

 

 

Минимальная зарплата: 
$3000
Максимальная зарплата: 
$4000

2014-12-04

13:43:04, Flash-ripper.com
GAF

Правда что http://gafmedia.com/ делают в Украине? Если да, то отзовитесь плиз :) Есть проблема http://gafmedia.com/forum/viewtopic.php?f=5&t=147


2014-11-27

18:54:51, Flash-ripper.com
Ищем Flex/AIR-разработчика

Ищем хорошего разработчика в Директ Коммандер. В московский или екатеринбургский офисы Яндекса, фуллтайм. Более подробное описание и точка входа здесь. В целом про условия работы написано здесь, от себя могу лишь подтвердить, что работать в Яндексе действительно удобно и хорошо.

Если есть какие-то вопросы - спрашивайте, постараюсь ответить.

PS: напоминаю, что у нас есть еще одна вакансия.


2014-11-21

22:13:44, Flash-ripper.com
Собери совещание
Инструкция

 

ИБД

 
 
 
 
 
 
Тэги: 

14:07:01, Flash-ripper.com
Определение геолокации в приложениях Adobe AIR на мобильных устройствах

2014-11-20

11:21:28, Flash-ripper.com
Try Haxe — кросс-платформенный язык разработки

Deep на сайте Haxe.ru пишет про обновление сайта Try.Haxe.Org — для быстрого онлайн-знакомства с языком Haxe (кстати, сайт сделан на нем же).

Haxe?

В 2006 году Haxe появился как универсальный язык программирования для разработки клиента и сервера, включая работу с базами данных. Мы отслеживали его развитие.

Haxe.org

С тех пор JavaScript также совершил большие шаги, но и Haxe не остановился, во многом превосходя JavaScript (благодаря смелости идей и таланту своего создателя Николя Канасье и сообществу энтузиастов).

Сейчас Haxe — это открытый инструментарий со строго типизированным языком, кросс-компилятором, полностью кросс-платформенной стандартной библиотекой и функциями доступа к системным возможностям каждой отдельной платформы.

На Haxe.ru перечислен список платформ Haxe:

  • Flash - swf для flash-плеера от 6 до 10+ версия, использующие либо "старое" API для Flash<8 (AS2) либо новое для Flash9+/AS3. Haxe предлагает очень хорошую производительность и языковые возможности для Flash разработки. Также из haXe кода можно генерировать код AS3 с помощью ключа -as3 out
  • JavaScript - клиентские скрипты .js в т.ч. использующие технологию Ajax. Полный доступ к типизированному DOM API браузера с поддержкой автодополнения, а все зависимости разрешаются во время компиляции.
  • NekoVM - компилированные программы, исполняемые виртуальной машиной neko, которые могут использоваться как серверные файлы для динамических веб-приложений (используя mod_neko для Apache) или как основа программ для командной строки или рабочего стола (NekoVM может быть расширена другими DLL)).
  • PHP - Можно компилировать Haxe программы в файлы .php. Это позволяет использовать высокоуровневый строго-типизированный язык - haXe, сохраняя при этом полную совместимость с имеющейся серверной платформой и библиотеками.
  • C++ - Теперь можно генерировать и C++ код из ваших Haxe программ, с необходимыми make-файлами. Это может быть удобным например для разработки iPhone приложений.
  • C# и Java -Также можно генерировать и C#/Java код. Данная возможность появилась в Haxe 2.10.

Попробуйте Haxe

Примеры:

Перейти на сайт:

Попробуйте Haxe


2014-11-19

14:56:51, Flash-ripper.com
Тут был пост "ссылки на статьи про Друпал"

В посте было три ссылки на свежие статьи по Drupal. А теперь все те ссылки — битые. Как неумолимо время. Пост был всего лишь от 7 июля 2014 года. 

Что мне теперь почитать про Drupal, а?


2014-11-18

14:33:52, Flash-ripper.com
Нужен сисадмин глобальных масштабов

Нужен админ с сетевым уклоном для работы в большой американской хостинг-компании. Работа из офиса в Харькове. Если интересно — пишитеФормальное описание вакансии намекает, что fluent technical English is mandatory:

Network Administrator

Job description

Network Administrator’s role to plan and coordinate the design, installation and connectivity of servers and network systems to ensure the stable operation of the organization’s IT infrastructure. This includes development, configuration, support and optimizations of all new and existing network hardware, software and communication links. In addition the Network Administrator will participate with the installation, monitoring, maintenance, support and optimizations of all network hardware, software and communication links. Troubleshoot network performance issues, analyze network traffic and provide capacity planning solutions.

Knowledge and experience

  • Proven experience and success with enterprise-level networks engineering, design and implementation.
  • Proven ability to engineer routers, switches, firewalls
  • Proven experience with network capacity planning, network security principles and general network management best practices.
  • Excellent technical knowledge of current network hardware, protocols and Internet standards
  • Strong knowledge of network management and analysis tools
  • Knowledge and understanding network security and data privacy practices
  • Knowledge, understanding and ability to create and maintain technical documentation
  • Experience in working with Juniper/Cisco/Brocade network equipment
  • Understanding the most common types of DDoS attacks and mitigation techniques

Кстати, прикольные читшит-обои по CLI, кликабельно для скачивания:

Cli Commands Cheatsheet

Да,

Если вы — вменяемый Unix-админ, тоже пишите!


2014-11-17

15:22:49, Flash-ripper.com
Видео доклада "Функциональное программирование"

Краткое содержание:

  • Фобии и предрассудки вокруг ФП
  • Мутабельность / иммутабельность
  • Чистые функции
  • Декларативное программирование
  • FRP (Functional Reactive Programming)
  • Библиотека react-as3, связывание данных, однократный листенер
  • Ссылки и источники вдохновения

Запись доклада:

Есть также интерактивная запись доклада на Adobe Connect (доклад начинается с 24 минуты):
UAFPUG-50: 5 - Функциональное программирование

Об авторе

Лена Кузнецова участвовала во многих проектах и командах, постепенно мигрировала от кодинга до управления кодом. Увлекается оптимизацией, Python и функциональным программированием. Имеет Facebook и желание пожить во Львове (до сих пор не уехала после конференции).

Доклад "Функциональное программирование"

Доклад состоялся 1 ноября на конференции UAFPUG-50 во Львове. На странице встречи есть остальные 4 доклада.


2014-11-14

13:55:08, Flash-ripper.com
Видео доклада "История одного звука"

Рассказ математика и программиста Андрея Андреева об алгоритме сличения звуков — это хит. Изложен матаппарат. Объясняются гармоники, несущая частота и другие интимные места теории музыки. Интерактивно, визуально показаны преобразование Радона, расстояние Фреше и оконная функция Хемминга. Не обошлось и без быстрого преобразования Фурье. Гранит этого спича можно грызть годами.

Запись:

Интерактивная на Adobe Connect: UAFPUG-50: 4 - История одного звука

Об авторе

Андрей Андреев думает формулами. Он программирует. Делает магические игры. Его доклады проверены практикой. На этой конференции он также провел мастер-класс по сборке приложений Adobe AIR под мобильные устройства (видео).

Картинка из доклада:

Доклад "История одного звука"

Это доклад с конференции UAFPUG-50 во Львове, 1 ноября; см. остальные там же.

 


2014-11-13

13:46:34, Flash-ripper.com
Готов к новым приключениям!
Виталий Снитко
Здравствуйте, меня зовут Виталий Снитко. Я ищу работу в Киеве (офис), либо удалённо. Готов начать с 21 ноября. О себе:
  • ActionScript3.0 senior developer
  • В геймдеве 2009 года
  • Игры для соцсетей
  • Опыт разработки клиента с чистого листа и до релиза
  • Были проекты, где поддерживал уже готовое
  • Всякое было )
  • Резюме: Виталий Снитко, синьор AS3-разработчик
Пишите на джимейл-ящик "zaidite" — жду предложений!
 
 
 
 

09:41:24, Flash-ripper.com
Видео доклада "Рефакторинг и оптимизация"

Лена Кузнецова рассказывает о рефакторинге с точки зрения управления кодом и проектами, пропагандируя идею вдумчивой и регулярной оптимизации, не доводя до превращения проекта в спагетти или неизвестную науке пиццу.

Запись доклада:

Смотрите также интерактивную запись доклада на Adobe Connect:
UAFPUG-50: 3 - Рефакторинг и оптимизация

Об авторе

Лена Кузнецова участвовала во многих проектах и командах, постепенно мигрировала от кодинга до управления кодом. Ее последнее увлечение — язык Python и функциональное программирование. Ведет Facebook.

Скриншот из доклада:

Доклад состоялся на конференции UAFPUG-50 во Львове, 1 ноября. Остальные доклады есть на странице встречи.


2014-11-07

12:39:35, Flash-ripper.com
Видео доклада "Загрузка ресурсов в AIR TAR как пакет"

Андрей Саломатин детально разбирает различные способы загрузки ресурсов с упором на оптимизацию процесса в своем докладе на конференции UAFPUG-50 во Львове, 1 ноября.

Объясняется формат и использование TAR-формата как удобного контейнера для потоковой загрузки и распаковки на лету. Трудно поверить, что это его первый доклад — настолько хорошо все изложено.

Запись доклада:

Есть также интерактивная запись на сайте Adobe Connect:
UAFPUG-50 - 2 - Загрузка ресурсов в AIR TAR как пакет

Слайды к презентации: https://speakerdeck.com/merlinds/zaghruzka-riesursov-v-air-tar-kak-pakiet

Об авторе

Андрей Саломатин - "зависимый инди-разработчик", как он сам себя называет. Провел много времени, создавая мобильные игры, делает фреймворк-альтернативу Starling. Ведет Facebook и действующий блог merlinds.com, где уже опубликовал отчет о 50-й встрече UAFPUG во Львове (спасибо!)

Остальные доклады UAFPUG-50 скоро также появятся на странице встречи.


2014-11-05

15:02:42, Flash-ripper.com
Видео мастер-класса "Подготовка и сборка мобильных приложений"

Андрей Андреев показал, как паковать мобильные AIR-приложения на мастер-классе во время конференции UAFPUG-50 во Львове, 1 ноября.

Разобран процесс публикации AIR для Android. Отдельно включены особенности iOS, такие, как генерирование сертификатов .p12 для тестирования. Демонстрируется создание и редактирование дескриптора мобильного приложения и иконок. Описано использование Android SDK и его инструментов adb и ddms, показаны подводные камни и оптимизации.

Запись мастер-класса:

Есть также интерактивная запись доклада на сайте Adobe Connect:
UAFPUG-50 - 1 - Подготовка и сборка мобильных приложений. Андрей Андреев

Об авторе

Андрей Андреев - в первую очередь не программист, но математик. Он любит делать игры и доклады. Все, что он рассказывает, проверено практикой.

Остальные четыре доклада UAFPUG-50 скоро появятся на странице встречи.

Спасибо за отличный туториал, Андрей!


2014-11-04

15:30:12, Flash-ripper.com
Английский для совсем ленивых
Это последний гвоздь в крышку языкового гроба. PlayPhrase.me — гениально простой сервис изучения английского по фразам и словам, на живых примерах из лучших фильмов. Просто вбиваете нужную вам фразу и have fun в контексте, а не как обычно:
http://www.playphrase.me/#/en/have%20fun . А если "have fun" обернуть в кавычки, найдете фразу по точному соответствию.
 

Еще примеры фраз:

Ребята только начали. Сейчас в базе 34388 фразы и 62 фильма. Awesome!
 
 
При этом еще и бесплатно. Не, вы серъезно?

2014-10-29

15:06:28, Flash-ripper.com
Away3D — нужен специалист

Приветствую. 

Суть задачи:  есть набор уже сделанной анимации в максе, ее нужно правильно экспортировать в библиотеку away3d. Это не для игр, а для дополнительной реальности, вот приблизительный эскиз того что мы сделали (но это просто рендер, мувик): https://www.youtube.com/watch?v=40m-SQzgUzE&feature=youtu.be  

Таких анимаций будет около 14-ти, нужно подготовить наши анимированные файлы в 3Д максе для перекидывания в движок Away3D.

О форматах сотрудничества готов обсдуить в скайпе ink_pixel или по почте info@inkpixel.com

Спасибо.

Away 3D Logo

Тэги: 

13:10:42, Flash-ripper.com
Вы хотите Apache Flex 4.13+ Air 14-15 beta? Но не можете побороть их установщик?
Log
Validating download: test/frameworks/libs/osmf.swc
OSMF download failed
Мы вам поможем!

1. Скачиваем вражеский OSMF.swc

https://sourceforge.net/projects/osmf.adobe/files/OSMF%202.0%20Release%2...

2. Выкачиваем http://svn.code.sf.net/adobe/flexsdk/code/trunk/lib/

3. Забираем fiddler http://www.telerik.com/download/fiddler

4.Устанавливаем и  настраиваем AutoResponder в fiddler

 
указываем для него afe.jar
для 
aglj40.jar
flex-fontkit.jar
flex-messaging-common.jar
rideau.jar
Аналогично.
 
итого примерно вот так должно быть
 
5. Запускаем инсталятор Apache Flex SDK Installer и далее - далее.

2014-10-22

14:27:59, Flash-ripper.com
Конференция UAFPUG-50 во Львове — 1 ноября

После долгого перерыва во Львове пройдет конференция флэш-разработчиков код UAFPUG-50. Место - офис GlobalLogic

Прозвучат доклады: 

  1. Функциональное программирование - Лена Кузнецова
  2. Мастер-класс по сборке приложений под Mobile - Андрей Андреев
  3. Отладка под Android+Linux и AIR SDK 15.0 - Виктор Примак
  4. Рефакторинг и оптимизация - Лена Кузнецова
  5. Триангуляция и глитчефикация - Ростислав Сирык
  6. Соцсети: God Mode (in progress) - C.

Регистрация уже началась, прошу:

Зарегаться на UAFPUG-50 во Львове  

P.S. Трудно сказать, когда у нас будет еще следующая такая возможность :)


2014-10-17

11:18:46, Flash-ripper.com
Вакансия: Flash/JS-разработчик, Екатеринбург, Яндекс

Ищу к себе в команду флэшера, который уже трансформировался в JS-разработчика или ещё пока активно собирается. Будем переписывать на JS/HTML всякое флэшовое. Маленькое, большое и, возможно, очень большое.

Подробнее тут: http://company.yandex.ru/job/vacancies/dev_flash.xml

Екатеринбург, офис, Яндекс, фуллтайм. Деньги обсуждаем на собеседовании.

Тэги: 

2014-10-13

13:21:19, Flash-ripper.com
Флэшер в Днепр — казино, фулл-тайм
В Днепропетровский офис Playtika нужен разработчик онлайн-казино с блэкджеком и дудками, делать игры на AS3 для существующей платформы. Тип занятости - полная (офис Менора). Зарплата зависит.
 
 
Playtika
 

 

 

Требования:

  • два года AS3, опыт OOP, design patterns и AS3-фреймфорков
  • json, XML, AMF, social networks API
  • знать и понимать взаимодействие client-server
  • git, svn, jira, stash
  • приветсвуется, но необязателен опыт в javascript, Unit Testing и CI
Мы дадим вам:
  • силу, молодость, красоту
  • 40-часов наслаждения в неделю
  • 20 дней отпуска
  • медицинскую страховку
  • премию раз в полгода
  • бесплатные курсы English
  • профессиональный тренинги
  • деньги

Интересно? Резюме с пометкой "Job Playtika" присылайте на Rostislav.Siryk@gmail.com


2014-10-02

10:08:38, Flash-ripper.com
Узнать версию Flash Player — myflashversion.com

myflashversion.com


2014-09-25

10:08:13, Flash-ripper.com
Обновленный Tour De Flex: более 300 примеров кода

Команда Apache Flex выпустила "Tour De Flex 1.1 Сomponent Еxplorer". Это обновление к версии 1.0 с улучшениями и багфиксами. Также исправлены неработающие примеры.

Изменения в Tour De Flex 1.1

  • Добавлены новые примеры, эксклюзивные для Apache Flex (будет больше).
  • Во вкладке Source появилась кнопка копирования исходника.
  • Добавлена кнопка-ссылка на github-код.
  • Плюс кнопка копирования ссылки на пример.
  • Улучшены билд-файл и описания задач.
  • Удалены неработающие ссылки на исходники.
  • Исправлено несколько других мелких проблем.
  • Теперь система содержит всего более 300 примеров.

Ссылки:

Кликабельно:

//flex.apache.org/tourdeflex/

Happy Coding!


2014-09-15

08:57:40, Flash-ripper.com
Город не важен: нужен флэшер-фрилансер

О проекте:

Оптимизация существующих на веб платформе флэш игр. Оптимизация под вин*8, мобильные девайсы не нужны. 

Кто нам нужен?

Команда из 4 человек, либо рассмотрим каждого в отдельности:)

Важно:

  • Опыт разработки игр на AS3 от 1-го года
  • Хорошее знание AS3
  • Понимание и использование принципов ООП
  • Навыки разработки в Flash IDE
  • Желание и умение писать аккуратный оптимизированный код
  • Опыт разработки клиент-серверных приложений
  • Навыки оптимизации производительности Flash приложений приветствуются
  • Умение создавать нестандартные пользовательские интерфейсы приветствуются
  • Навыки работы с системами контроля версий SVN, Git приветствуются
  • Готовность работать в команде, коммуникационные навыки, обучаемость
  • Письменный и разговорный английский
Сотрудничество на основе фриланс от 3 до 6 месяцев (возможно продолжение).

2014-09-11

12:58:28, Flash-ripper.com
JavaScript для Flex-разработчика. Запись доклада и ссылки

На самом деле, этот доклад будет полезен также enterprise-разработчикам, которые еще не знаю, с чего начать путь в JavaScript.

Так вышло, что многие команды Flex-разработчиков переходят на JavaScript. И хотя появляются такие решения, как кросс-компилятор FlexJS — задача изучения JS стоит перед многими. Важная особенность JS в том, что тут нет одного-единственного фреймворка, покрывающего все задачи — вы должны подобрать оптимальный для вашего случая набор.

Даниил Московцов — настоящий флексер. Он рассказывает о том, как переходила на Enterprise-разработку его команда, в которой не было ни одного разработчика с реальным опытом в JS. Вот уже восьмой месяц они создают на JS сложный промышленный проект с высокими требованиями к устойчивости и качеству. Они нашли тот стек фреймворков, который хорошо решает их задачи, в том числе такие, как поддерживаемость кода, TDD и бизнес-стандарты. Почему был выбран тот или иной фреймворк и что он делает — об этом рассказывается в докладе. От себя добавлю, что практически все фреймворки из доклада являются звездами в своих областях и заслуживают внимательного изучения.

Запись доклада:

От Flex к Javascript на конференции UAFPUG #47. Харьков, 6 сентября 2014 г.

Слайды к докладу:

 

Фреймворки из доклада, картинкой:

Фреймворки из доклада, списком:

Докладчик: 

Даниил Московцов:

Что дальше?

Заседание продолжается!

Следующая конференция UAFPUG-48 будет в Киеве в GL-Club'е. Будем обсуждать:

  • Функциональное программирование во Flash (и его подводные камни)
  • Crowsdsourcing как средство разработки
  • Работа со Starling
  • Анонс важного комьюнити-проекта (подробности будут)
     

Зарегистрироваться на UAFPUG №48

 


2014-09-10

11:30:04, Flash-ripper.com
Вышел Adobe Flash Player 15: новые возможности и безопасность

Выпущены Adobe Flash Player 15.0.0.152 и AIR 15.0.0.249. В новых версиях Flash Runtime исправлены уязвимости на всех платформах, включая iOS и Android.

Повышение безопасности

Предыдущие версии Flash Player 14 и Flash Player 13 содержат уязвимости, такие, как утечки памяти, что может использоваться для обхода рандомизации выделения адресов памяти (ASLR), обхода системы безопасности, использования памяти после ее освобождения (use-after-free), повреждения областей памяти и обхода политики единого происхождения кода, а также переполнение буфера. На сайте Adobe есть полный писок уязвимостей Flash Player 13 и 14. Там же можно проверить, какая версия Flash Player установлена у вас.

Исправление для Google Chrome ожидается в ближайшем времени. Microsoft, скорее всего, выпустит обновления для Internet Explorer как часть патча.

Новые возможности Flash Player 15

Adobe нашла чем порадовать и разработчиков. Вот список основных улучшений со ссылками на статьи:

  1. Улучшена поддержка уровней масштабирования в браузере под Win 8.
  2. Изменение ориентации Flash Player в полноэкранном режиме под Windows. 
  3. Аппаратное декодирование видео в Chrome (PPAPI) под Windows. 
  4. Автоматический откат до программного StageVideo.
  5. Снятие ограничений с операции Stage3D Render Target Clear.
  6. Поддержка "стандартного" профиля Stage3D для iOS и Android
  7. StageText.drawViewPortToBitmapData теперь поддерживает Retina-дисплеи. 
  8. Improved Packaging Engine теперь используется по умолчанию под IOS. 
  9. Улучшения для AIR Gamepad.
  10. Кросс-платформенное продвижение для игр на AIR.

Скачать Adobe Flash Player и Adobe AIR

Документация к Flash Player 

А тем временем, в индексе TIOBE язык ActionScript занял 14 место.

Приходите пообщаться в Киеве

Продолжается регистрация на конференцию UAFPUG-48 в Киеве. Будем обсуждать:

  • Функциональное програмирование во Flash
  • Использование Starling
  • Привлечение средств через краудсоурсинг
  • Кое-какие интересные проекты (подробности скоро)
     

Зарегистрироваться на UAFPUG №48

 


Предыдущие 30 | Следующие 30