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

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

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

Регистрация: Oct 2007
Сообщений: 15
По умолчанию Не работают if - ы

Вот написал такой класс с движением космокорабля - но столкнулся с тем что операторы if в onEnterFrame - e как то странно себя ведут. Тоесть должно работать так, чтоб мой корабль при вылетании за пределы появлялся с другой стороны. Но в моей версии они срабатывают сразу и возвращают на указанные координаты мой корабль. Вообщем прошу совета как исправить - или же как написать это правильно. Сама проблема в закомменченном блоке - но на всякий - я выложу весь код.
Код:
class SpaceShipClip extends MovieClip
{
	var c:Number = 0;
	var flamme:MovieClip;
	var dX:Number = 0;
	var dY:Number = 0;
	var speed:Number = 0;
	var rotangl:Number = 0;
	var counter:Number = 0;
	var radians:Number = Math.PI / 180;
	public function SpaceShipClip()
	{
		Key.addListener(this);
	}
	public function onKeyDown():Void
	{
		if (Key.isDown(39))
		{
			rotangl += 0.2;
		} 
		if (Key.isDown(37))
			rotangl -= 0.2;
		}
		if (Key.isDown(38))
		{
			speed += 0.1;
		}
		if (Key.isDown(40))
		{
			speed -= 0.3;
		}
		if (Key.isDown(32))
		{
		}
	}
	public function onEnterFrame():Void
	{
		dX = Math.cos(rotangl) * speed;
		dY = Math.sin(rotangl) * speed;
		this._rotation = (rotangl / radians) + 90;
		dX *= 0.9;
		dY *= 0.9;
		this._x += dX;
		this._y += dY;
		counter++;
        /*if (speed < 0);
		{
			//speed = 0;
		}
		if (this._x > 600);
			{
				this._x = 0;
			}
			if (this._y > 500);
			{
				this._y = 0;
			}
			if (this._x <= 0);
			{
				this._x = 600;
			}
			if (this._y <= 0);
			{
				this._y = 500;
			}
			trace (this._x);*/
	}
}

Старый 03.10.2007, 22:18
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Пусть х = 605
Код:
if (this._x > 600){
				this._x = 0;
			}//тут стало х = 0
			if (this._y > 500);
			{
				this._y = 0;
			}
			if (this._x <= 0);
			{
				this._x = 600;
			}//а теперь стало х = 600
			if (this._y <= 0);
			{
				this._y = 500;
			}
			trace (this._x);*/
	}//и все зависло
else if надо ставить, а не просто стопку if
__________________
4am is time to rock

Старый 03.10.2007, 23:39
Pro3ik вне форума Посмотреть профиль Отправить личное сообщение для Pro3ik Найти все сообщения от Pro3ik
  № 3  
Ответить с цитированием
Pro3ik
 
Аватар для Pro3ik

Регистрация: Oct 2007
Сообщений: 15
Спасибо.

Старый 04.10.2007, 15:09
_ViPeR_ вне форума Посмотреть профиль Отправить личное сообщение для _ViPeR_ Найти все сообщения от _ViPeR_
  № 4  
Ответить с цитированием
_ViPeR_

Регистрация: Sep 2007
Сообщений: 64
А зачем столько if'ов? А switch и case'ы уже не в моде?

Старый 04.10.2007, 15:12
Double вне форума Посмотреть профиль Отправить личное сообщение для Double Найти все сообщения от Double
  № 5  
Ответить с цитированием
Double
 
Аватар для Double

Регистрация: Mar 2001
Сообщений: 1,147
Цитата:
Сообщение от _ViPeR_
А зачем столько if'ов? А switch и case'ы уже не в моде?
а как написать свич, чтобы проверять сразу _x и _y?..
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

Старый 04.10.2007, 15:20
_ViPeR_ вне форума Посмотреть профиль Отправить личное сообщение для _ViPeR_ Найти все сообщения от _ViPeR_
  № 6  
Ответить с цитированием
_ViPeR_

Регистрация: Sep 2007
Сообщений: 64
Цитата:
Сообщение от Double
а как написать свич, чтобы проверять сразу _x и _y?..
Судя по выложенному коду, вижу только одиночные условия в ифах

Старый 04.10.2007, 15:29
Double вне форума Посмотреть профиль Отправить личное сообщение для Double Найти все сообщения от Double
  № 7  
Ответить с цитированием
Double
 
Аватар для Double

Регистрация: Mar 2001
Сообщений: 1,147
ну так а какой смысл менять 2 if для _x и 2 для _y на 2 switch с парой же case для каждого?..
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

Старый 04.10.2007, 15:56
Pro3ik вне форума Посмотреть профиль Отправить личное сообщение для Pro3ik Найти все сообщения от Pro3ik
  № 8  
Ответить с цитированием
Pro3ik
 
Аватар для Pro3ik

Регистрация: Oct 2007
Сообщений: 15
Может ещё посоветуете как движение исправить? Просто я его и через Swich писал и для каждой кнопки по функции делал и onKeyDown в онЕнтерФрейм засовывал, а всё равно как то одновременно не срабатывают две кнопки.Как оно сейчас работает можете глянуть в файле.
Вложения
Тип файла: rar Game v1.0.rar (2.0 Кб, 68 просмотров)

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

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

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


 


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


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