Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.05.2007, 17:21
combo вне форума Посмотреть профиль Отправить личное сообщение для combo Найти все сообщения от combo
  № 1  
Ответить с цитированием
combo
 
Аватар для combo

Регистрация: Nov 2006
Сообщений: 177
По умолчанию Как уменьшить такой код?..

Код:
function goToWay(way:String) { 
	var step:Number = 5;
	
	switch (way) {
		case "right":
			mc1._x -= step;
			break;
		case "left":
			mc1._x += step;
			break;
		case "up":
			mc1._y += step;
			break;
		case "down":
			mc1._y -= step;
			break;
	}
};

arrowRight_btn.onRelease = function() {
	goToWay("right");
};
arrowLeft_btn.onRelease = function() {
	goToWay("left");
};
arrowUp_btn.onRelease = function() {
	goToWay("up");
};
arrowDown_btn.onRelease = function() {
	goToWay("down");
};
Собст-но сабж. Думаю, можно написать как-то короче, но не знаю как. Кнопок в принципе может быть больше и не охота из-за этого сильно "раздувать" флешку.
Как оптимизировать?

Старый 07.05.2007, 17:50
Aziz Zaynutdinoff вне форума Посмотреть профиль Отправить личное сообщение для Aziz Zaynutdinoff Посетить домашнюю страницу Aziz Zaynutdinoff Найти все сообщения от Aziz Zaynutdinoff
  № 2  
Ответить с цитированием
Aziz Zaynutdinoff
 
Аватар для Aziz Zaynutdinoff

Регистрация: Feb 2006
Адрес: Moscow
Сообщений: 552
Код:
function goToWay(way:String) {
	var step:Number = 5;
	var s:Number = (way == "left" && way != "up" && way != "down") ? -1 : 1;
	var d:Number = (way == "up" && way != "left" && way != "right") ? -1 : 1;
	var __x:Number = (way == "right" || way == "left") ? step*s : 0;
	var __y:Number = (way == "up" || way == "down") ? step*d : 0;
	mc1._x += __x;
	mc1._y += __y;
}


Последний раз редактировалось Aziz Zaynutdinoff; 07.05.2007 в 17:57.
Старый 07.05.2007, 20:54
combo вне форума Посмотреть профиль Отправить личное сообщение для combo Найти все сообщения от combo
  № 3  
Ответить с цитированием
combo
 
Аватар для combo

Регистрация: Nov 2006
Сообщений: 177
Aziz Zaynutdinoff, спасибо, но по-моему так еще запутанее чем у меня.

И еще вопрос по оптимизации: как быть с баттонами? То есть можно ли, скажем, сделать какую-нибудь универсальную для этих кнопок функцию, чтобы при этом аргументы в goToWay они передавали разные ?

Старый 07.05.2007, 20:56
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код:
function goToWay (x:Number, y:Number) {
	var step:Number = 5;
	mc1._x += step * x;
	mc1._y += step * y;
}
arrowRight_btn.onRelease = function () {
	goToWay (1, 0);
};
arrowLeft_btn.onRelease = function () {
	goToWay (-1, 0);
};
arrowUp_btn.onRelease = function () {
	goToWay (0, -1);
};
arrowDown_btn.onRelease = function () {
	goToWay (0, 1);
};
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 07.05.2007, 20:59
Aziz Zaynutdinoff вне форума Посмотреть профиль Отправить личное сообщение для Aziz Zaynutdinoff Посетить домашнюю страницу Aziz Zaynutdinoff Найти все сообщения от Aziz Zaynutdinoff
  № 5  
Ответить с цитированием
Aziz Zaynutdinoff
 
Аватар для Aziz Zaynutdinoff

Регистрация: Feb 2006
Адрес: Moscow
Сообщений: 552
знаешь на самом деле я бы просто передавал два параметра
Код:
function goToWay(__x:Number, __y:Number):Void
{
     __x = (__x == undefined) ? 0 : __x;
     __y = (__y == undefined) ? 0 : __y;
     _mc._x += __x;
     _mc._y += __y;
};
btn.onRelease = function()
{
     goToWay(-5); //влево
}
btn1.onRelease = function()
{
     goToWay(-5, 5); //вниз-влево
}
UPD:
iNils опередил хотя есть немного разница

Старый 07.05.2007, 21:02
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 6  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Код:
var step = 5;
var wayObj = {
left:{dx: step, dy:0},
right:{dx:-step, dy:0},
down:{dy: step, dx:0},
up:{dy: -step, dx:0}
}
function goToWay(way:String) { 
var ob = wayObj[way];
 mc1._x += ob.dx;
 mc1._y += ob.dy;
};

arrowRight_btn.onRelease = function() {
	goToWay("right");
};
arrowLeft_btn.onRelease = function() {
	goToWay("left");
};
arrowUp_btn.onRelease = function() {
	goToWay("up");
};
arrowDown_btn.onRelease = function() {
	goToWay("down");
};
Длиннее, но гибче.

Старый 07.05.2007, 23:35
aksios вне форума Посмотреть профиль Отправить личное сообщение для aksios Найти все сообщения от aksios
  № 7  
Ответить с цитированием
aksios
loading 50%
 
Аватар для aksios

Регистрация: Jun 2005
Адрес: I am where I should be
Сообщений: 3,567
Отправить сообщение для aksios с помощью ICQ
Код:
var step:Number = 5;
var n:Object = {r:{x:1,y:0},l:{x:-1,y:0},t:{x:0,y:-1},d:{x:0,y:1}};
function goToWay(way) { 
mc1._x+= step*n[way].x;
mc1._y+= step*n[way].y;
}
arrowRight_btn.onRelease = function()
{
	goToWay("r");
};
arrowLeft_btn.onRelease = function() {
	goToWay("l");
};
arrowUp_btn.onRelease = function() {
	goToWay("t");
};
arrowDown_btn.onRelease = function() {
	goToWay("d");
};


Последний раз редактировалось aksios; 07.05.2007 в 23:48.
Старый 08.05.2007, 00:06
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 8  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Код:
var step = 5;
var wayObj = {
left:{dx: step},
right:{dx:-step},
down:{dy: step},
up:{dy: -step},
down20px:{dy: 20},
downRight20px:{dy: step, dx:-20}
}
function goToWay(way:String) { 
var ob = wayObj[way];
 if( ob.dx ) mc1._x += ob.dx;
 if( ob.dy ) mc1._y += ob.dy;
};
function btnOnRelease() {
if( this.dir == undefined ) this.dir = (this._name.split("_"))[0];
gotoWay(this.dir);
};

right_btn.onRelease = left_btn.onRelease = up_btn.onRelease = btnOnRelease;
down_btn.onRelease = down20px_btn.onRelease = downRight20px_btn.onRelease = btnOnRelease;


Последний раз редактировалось Kikasso; 08.05.2007 в 00:16.
Старый 08.05.2007, 00:13
this.create вне форума Посмотреть профиль Отправить личное сообщение для this.create Найти все сообщения от this.create
  № 9  
Ответить с цитированием
this.create

Регистрация: Feb 2007
Сообщений: 264
Цитата:
Сообщение от combo
Код:
function goToWay(way:String) { 
    var step:Number = 5;
    
    switch (way) {
        case "right":
            mc1._x -= step;
            break;
        case "left":
            mc1._x += step;
            break;
        case "up":
            mc1._y += step;
            break;
        case "down":
            mc1._y -= step;
            break;
    }
};

arrowRight_btn.onRelease = function() {
    goToWay("right");
};
arrowLeft_btn.onRelease = function() {
    goToWay("left");
};
arrowUp_btn.onRelease = function() {
    goToWay("up");
};
arrowDown_btn.onRelease = function() {
    goToWay("down");
};
Собст-но сабж. Думаю, можно написать как-то короче, но не знаю как. Кнопок в принципе может быть больше и не охота из-за этого сильно "раздувать" флешку.
Как оптимизировать?
Вот короче:
Код:
var step:Number = 5;
arrowRight_btn.onRelease = function() {
    mc1._x -= step;
};
arrowLeft_btn.onRelease = function() {
    mc1._x += step;
};
arrowUp_btn.onRelease = function() {
    mc1._y += step;
};
arrowDown_btn.onRelease = function() {
    mc1._y -= step;
};
Про много кнопок: как вы их планируете вставлять в сцену. От этого будет зависить и оптимизация.
ps. А может вам просто класс Key нужен?


Последний раз редактировалось this.create; 08.05.2007 в 00:17.
Старый 08.05.2007, 11:57
combo вне форума Посмотреть профиль Отправить личное сообщение для combo Найти все сообщения от combo
  № 10  
Ответить с цитированием
combo
 
Аватар для combo

Регистрация: Nov 2006
Сообщений: 177
Цитата:
Сообщение от this.create
Вот короче:
Код:
var step:Number = 5;
arrowRight_btn.onRelease = function() {
    mc1._x -= step;
};
arrowLeft_btn.onRelease = function() {
    mc1._x += step;
};
arrowUp_btn.onRelease = function() {
    mc1._y += step;
};
arrowDown_btn.onRelease = function() {
    mc1._y -= step;
};
Нет, такой вариант как раз не очень гибкий - а если еще нужно ходить по диагонали, то придётся опять дублировать код?

Цитата:
Про много кнопок: как вы их планируете вставлять в сцену. От этого будет зависить и оптимизация.
ps. А может вам просто класс Key нужен?
я не аттачу их из библиотеки, а вставляю сразу в редакторе. Ну, вот сейчас, например, у меня девять кнопок(на все возможные ходы) и для всех почти одинаковый код, отличающийся только передаваемым значением (way). Поэтому интересует, как можно упростить код, и не писать для каждой кнопки свой onRelease.

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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