Начало
Ну вот, началось...
public class Main extends Sprite {
var sc:Scene;
public function Main():void {
if (stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
sc = new Scene();
var req:URLRequest = new URLRequest("http://имя_домена/test/models/p.obj");
req.method = URLRequestMethod.POST;
var load:URLLoader = new URLLoader();
load.addEventListener(Event.COMPLETE, completeHandler);
try {
load.load(req);
} catch (err:Error){
trace(err.message);
}
}
private function completeHandler(event:Event):void {
sc.loadOBJ(event.target.data);
}
}
И первым появляется класс Scene, который отвечает за обработку (парсинг obj) и отрисовку объектов. И первой очевидной разницей между ActionScript и JavaScript становится объявление классов/объектов (классы - это AS, объекты - JS):
И вместо:
(public - this.имя_открытого_свойства, private - var имя_закрытого_свойства), в ActionScript уже явное определение.
На ActionScript можно забыть о небрежном стиле JS объявления переменных:
var имя_переменной и все, нужно как минимум так:
var имя_переменной:* (конечно, желательно точно указывать тип, но можно и так)
Например, вместо данного кода на JS:
function Surface(A, B, C, D) {
this.A = A;
this.B = B;
this.C = C;
this.D = D;
}
Surface.isEqual = function(s1, s2) {
return s1.A == s2.A && s1.B == s2.B && s1.C == s2.C && s1.D == s2.D;
};
Получается на AS3:
То есть вместо
Продолжение следует...
Ну вот, началось...
public class Main extends Sprite {
var sc:Scene;
public function Main():void {
if (stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
sc = new Scene();
var req:URLRequest = new URLRequest("http://имя_домена/test/models/p.obj");
req.method = URLRequestMethod.POST;
var load:URLLoader = new URLLoader();
load.addEventListener(Event.COMPLETE, completeHandler);
try {
load.load(req);
} catch (err:Error){
trace(err.message);
}
}
private function completeHandler(event:Event):void {
sc.loadOBJ(event.target.data);
}
}
И первым появляется класс Scene, который отвечает за обработку (парсинг obj) и отрисовку объектов. И первой очевидной разницей между ActionScript и JavaScript становится объявление классов/объектов (классы - это AS, объекты - JS):
И вместо:
function Scene(){
}
Получится:
public class Scene {
public function Scene(){
}
public function Scene(){
}
}
В JS для объявления public/private приходилось идти на хитрости(public - this.имя_открытого_свойства, private - var имя_закрытого_свойства), в ActionScript уже явное определение.
На ActionScript можно забыть о небрежном стиле JS объявления переменных:
var имя_переменной и все, нужно как минимум так:
var имя_переменной:* (конечно, желательно точно указывать тип, но можно и так)
Например, вместо данного кода на JS:
function Surface(A, B, C, D) {
this.A = A;
this.B = B;
this.C = C;
this.D = D;
}
Surface.isEqual = function(s1, s2) {
return s1.A == s2.A && s1.B == s2.B && s1.C == s2.C && s1.D == s2.D;
};
Получается на AS3:
public class Surface {
public var A:Number;
public var B:Number;
public var C:Number;
public var D:Number;
public function Surface(A:Number,B:Number,C:Number,D:Number) {
this.A = A;
this.B = B;
this.C = C;
this.D = D;
}
public static function isEqual(s1:Surface,s2:Surface):Boolean {
return s1.A == s2.A && s1.B == s2.B && s1.C == s2.C && s1.D == s2.D;
}
public var A:Number;
public var B:Number;
public var C:Number;
public var D:Number;
public function Surface(A:Number,B:Number,C:Number,D:Number) {
this.A = A;
this.B = B;
this.C = C;
this.D = D;
}
public static function isEqual(s1:Surface,s2:Surface):Boolean {
return s1.A == s2.A && s1.B == s2.B && s1.C == s2.C && s1.D == s2.D;
}
}
Еще одной неприятной мелочью явилось отсутствие в AS обращения к символам в строке как к элементам массива.То есть вместо
var s="adasd";
s[0]="4";
необходимо использовать, например, такой способ:
var s:String="adasd";
var a:Array=s.split('');
a[0]='4';
s=a.join('');
Для чтения можно использовать метод charAt(номер_индекса).Продолжение следует...
Комментариев нет:
Отправить комментарий