Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   , и ; в чем смысл? (http://www.flasher.ru/forum/showthread.php?t=70376)

__i 13.10.2005 13:09

, и ; в чем смысл?
 
недавно смотрел пример так вот в нем встретил такое

mc=this.mc,h=this.mc.inner.h,v=this.mc.inner.v,c=this.cursor;


так вот в чем прикол этих запятых? вроде ж тама должны быть точки с запятыми? может я че-то не понимаю, может это типа правильный стиль, объясните

(код взят из примера sillin'а)

Whatsername 13.10.2005 13:26

Есть такой оператор, people call It: "запятая". Он позволяет вычислить несколько выражений, перечисленных через запятую и всегда возвращает значение последнего выражения. Например, попробуй сделать trace(("Hello", "World")).

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

__i 13.10.2005 13:35

исходный код (немного провтыкал):

var mc=this.mc,h=this.mc.inner.h,v=this.mc.inner.v,c=this.cursor;

Whatsername 13.10.2005 13:37

Разве я не ответил на твой вопрос? =))

__i 13.10.2005 13:42

т.е. че в конце концов получиться ??

я что-то въехать не могу?

получаеться что в этой строке все поприсваивалось как нужно, а куда этот последний результат вернеться ??
как я понимаю это будет this.cursor

__i 13.10.2005 13:43

вернее вернет значение this.cursor но куда ?

Whatsername 13.10.2005 13:44

При инициализации переменных можно использовать запятую для объявления сразу нескольких переменных. Собственно, это здесь и происходит.

var x; // объявить одну переменную
var x, y; // объявить две переменные
var x = 10, y = 5; // объявить и инициализировать сразу две
var x = this.mc.x, y = this.mc.y; // ну, понятно, я думаю

__i 13.10.2005 13:48

а тогда смысл использования запятой ?, можешь пример привести где это будет целесообразно, а то я не могу чето понять?

__i 13.10.2005 13:49

function set _xskew(x){sx=x,skewxy(x,sy)}

вот например зачем здесь запятая ?

Whatsername 13.10.2005 13:56

Цитата:

Сообщение от __i
вернее вернет значение this.cursor но куда ?

Инструкция var не возвращает значения. Вот если ошибаюсь — поправьте кто-нибудь.

А если тебя смущает, что возвращаемое значение должно обязательно вылиться в что-нить стоящее — это не всегда так. Поэтому допустимо выражение:
Код:

"Hello" // никакой пользы, так как результат не сохраняется
Или, к примеру, можно проверить значение, возвращаемое методом stop().

__i 13.10.2005 14:00

иииииииииииии, ладно фиг с ней с запятой, жил же без этого нормально, просто я думал что меня где то кидают а где не мог понять %)))

Whatsername 13.10.2005 14:01

Цитата:

Сообщение от __i
function set _xskew(x){sx=x,skewxy(x,sy)}
вот например зачем здесь запятая ?

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

А как работает этот оператор я тебе объяснил. Ты уже открывал Флеш, чтобы его опробовать?

__i 13.10.2005 14:04

пробывал, да токо применения кроме var, не смог придумать.

а код такой:
//©sillin
//добавляет свойства сдвига(skew) по x и y
//мувик должен иметь вложенный мувик (отцентрированный, иначе все криво)
class Skew extends MovieClip{
private var scale,sx,sy;
function Skew(){
scale = _xscale;
for (var i in this) if (typeof (this[i])=="movieclip")this[i]._rotation = -45;
skewxy(0,0);
}
private function skewxy(ax,ay){
var rad = Math.PI/180;
_rotation = (Number(ax)+Number(ay))/2+45;
var s=2*Math.sin(this._rotation*rad)/Math.SQRT2;
ax*=rad,ay*=rad,trace('werwr');
_xscale = scale*(Math.cos(ax)+Math.sin(ay))/s;
_yscale = scale*(Math.sin(ax)+Math.cos(ay))/s;
}
function set _xskew(x){sx=x,skewxy(x,sy)}
function set _yskew(y){sy=y,skewxy(sx,y)}
function get _xskew(){return sx;}
function get _yskew(){return sy;}
}

__i 13.10.2005 14:05

первый вар из другого текста

TTS 13.10.2005 15:19

Вот тебе пример
for(i=0, j=-10; i<10; i++, j-=3) ...

или вот так
{
...
} while(j-=3, ++i<10)

или так
a = flag ? j-=3, i++ : i--, j+=3;
помогает избежать фигурные скобки


Часовой пояс GMT +4, время: 17:03.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.