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

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

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

Регистрация: Apr 2010
Сообщений: 13
По умолчанию as файлы

Здравствуйте! Пишу простенькую игру вот её код :

Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down)
stage.addEventListener(KeyboardEvent.KEY_UP,key_up)
 
var power:Number = 0.96;
var friction:Number = 0.95;
var count:Number =0;
var up:Boolean = false;
var down:Boolean = false;
var left:Boolean = false;
var right:Boolean = false;
var speed:Number = 0;
var gradusRot:Number =4;
var gradus:Number = 0;
var radian:Number ;
var speedX:Number;
var speedY:Number;
 
function key_down(e:KeyboardEvent) :void 
{
	trace(e.keyCode);
	if (e.keyCode == 37)
	{
		left = true;
	}
	if (e.keyCode == 38)
	{
		up = true;
	}
	if (e.keyCode == 39)
	{
		right = true;
	}
	if (e.keyCode == 40)
	{
		down = true;
	}
}
function key_up(e:KeyboardEvent) :void 
{
	trace(e.keyCode);
	if (e.keyCode == 37)
	{
		left = false;
	}
	if (e.keyCode == 38)
	{
		up = false;
	}
	if (e.keyCode == 39)
	{
		right = false;
	}
	if (e.keyCode == 40)
	{
		down = false;
	}
}
addEventListener (Event.ENTER_FRAME, moveCar);
function moveCar (e:Event): void
{
	if (left)
	{
		gradus -= gradusRot;
	}
	if (up)
	{
		speed += power;
	}
	if (right)
	{
		gradus += gradusRot;
	}
	if (down)
	{
		speed -= power;
	}
	speed *= friction;
	radian = (gradus * Math.PI)/180;
    var speedX = speed*Math.cos(radian);
    var speedY = speed*Math.sin(radian);
	car_mc.rotation = gradus;
	car_mc.x += speedX;
	car_mc.y += speedY;
	if (car_mc.x > 500+40)
	{
		car_mc.x = 0-40;
	}
	if (car_mc.x < 0-40)
	{
		car_mc.x = 500+40;
	}
	if (car_mc.y > 500+40)
	{
		car_mc.y = 0-40;
	}
	if (car_mc.y < 0-40)
	{
		car_mc.y = 500+40;
	}
	if (car_mc.hitTestObject(coin_mc))
	{
		coin_mc.x = Math.random()*500;
		coin_mc.y = Math.random()*500;
		count ++;
		trace(count);
		}
	hitStage ()
	{
		function hitStage():void 
		{
			if (car_mc.x>500-40){
				car_mc.x=500-40
				speed=-speed*0.5
			}
			if (car_mc.x<0+40){
				car_mc.x=0+40
				speed=-speed*0.5
			}
			if (car_mc.y>500-40){
				car_mc.y=500-40
				speed=-speed*0.5
			}
			if (car_mc.y<0+40){
				car_mc.y=0+40
				speed=-speed*0.5
 
			}
		}
	}
}
Теперь мне понадобилось использовать calss Пример:
Код AS3:
public class Cars extends MovieClip
Flash ругается что для использование класса
Цитата:
The public attribute can only be used inside a package (общественный атрибут может использоваться только внутри пакета.)
Для этого хочу свой код перенести в *.as Как мне это грамотно и правильно сделать? Я новичок во Flash можно по подробнее описать.

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Ночевку?
Создать файлик Cars.as в нем прописать все, что вам нужно.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.display.MovieClip;
 
	public class Car extends Sprite
	{
		private static const POWER:Number = 0.96;
		private static const FRICTION:Number = 0.95;
		private static const GRAD_STEP:Number = 4.00;
 
		private var count:Number = 0;
 
		private var up:Boolean = false;
		private var down:Boolean = false;
		private var left:Boolean = false;
		private var right:Boolean = false;
 
		private var speed:Number = 0;
		private var speedX:Number;
		private var speedY:Number;
 
		private var gradus:Number = 0;
		private var radian:Number;
 
		public function Car()
		{
			if (stage)
			{
				init();
			}
			else
			{
				addEventListener(Event.ADDED_TO_STAGE, init);
			}
		}
 
		private function init(event:Event = null):void
		{
			stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
			stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
			addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
		}
 
		private function onKeyDownHandler(event:KeyboardEvent):void
		{
			if (event.keyCode == 37)
			{
				left = true;
			}
			else if (event.keyCode == 38)
			{
				up = true;
			}
			else if (event.keyCode == 39)
			{
				right = true;
			}
			else if (event.keyCode == 40)
			{
				down = true;
			}
		}
 
		private function onKeyUpHandler(event:KeyboardEvent):void
		{
			if (event.keyCode == 37)
			{
				left = false;
			}
			else if (event.keyCode == 38)
			{
				up = false;
			}
			else if (event.keyCode == 39)
			{
				right = false;
			}
			else if (event.keyCode == 40)
			{
				down = false;
			}
		}
 
		function onEnterFrameHandler(event:Event):void
		{
			if (left)
			{
				gradus -=  GRAD_STEP;
			}
			if (up)
			{
				speed +=  POWER;
			}
			if (right)
			{
				gradus +=  GRAD_STEP;
			}
			if (down)
			{
				speed -=  POWER;
			}
 
			speed *=  FRICTION;
			radian = (gradus * Math.PI) / 180;
			speedX = speed * Math.cos(radian);
			speedY = speed * Math.sin(radian);
 
			rotation = gradus;
			x +=  speedX;
			y +=  speedY;
 
			if (hitTestObject((parent as MovieClip).coin_mc))
			{
				(parent as MovieClip).coin_mc.x = Math.random() * 500;
				(parent as MovieClip).coin_mc.y = Math.random() * 500;
				count++;
				trace(count);
			}
 
			if (x > 500 - 40)
			{
				x = 500 - 40;
				speed =  -  speed * 0.5;
			}
			else if (x < 0 + 40)
			{
				x = 0 + 40;
				speed =  -  speed * 0.5;
			}
 
			if (y > 500 - 40)
			{
				y = 500 - 40;
				speed =  -  speed * 0.5;
			}
			else if (y < 0 + 40)
			{
				y = 0 + 40;
				speed =  -  speed * 0.5;
			}
		}
	}
}

Старый 21.08.2011, 23:44
TocTbIP вне форума Посмотреть профиль Отправить личное сообщение для TocTbIP Найти все сообщения от TocTbIP
  № 4  
Ответить с цитированием
TocTbIP

Регистрация: Apr 2010
Сообщений: 13
Цитата:
Сообщение от TWETTI Посмотреть сообщение
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.display.MovieClip;
 
	public class Car extends Sprite
	{
		private static const POWER:Number = 0.96;
		private static const FRICTION:Number = 0.95;
		private static const GRAD_STEP:Number = 4.00;
 
		private var count:Number = 0;
 
		private var up:Boolean = false;
		private var down:Boolean = false;
		private var left:Boolean = false;
		private var right:Boolean = false;
 
		private var speed:Number = 0;
		private var speedX:Number;
		private var speedY:Number;
 
		private var gradus:Number = 0;
		private var radian:Number;
 
		public function Car()
		{
			if (stage)
			{
				init();
			}
			else
			{
				addEventListener(Event.ADDED_TO_STAGE, init);
			}
		}
 
		private function init(event:Event = null):void
		{
			stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
			stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
			addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
		}
 
		private function onKeyDownHandler(event:KeyboardEvent):void
		{
			if (event.keyCode == 37)
			{
				left = true;
			}
			else if (event.keyCode == 38)
			{
				up = true;
			}
			else if (event.keyCode == 39)
			{
				right = true;
			}
			else if (event.keyCode == 40)
			{
				down = true;
			}
		}
 
		private function onKeyUpHandler(event:KeyboardEvent):void
		{
			if (event.keyCode == 37)
			{
				left = false;
			}
			else if (event.keyCode == 38)
			{
				up = false;
			}
			else if (event.keyCode == 39)
			{
				right = false;
			}
			else if (event.keyCode == 40)
			{
				down = false;
			}
		}
 
		function onEnterFrameHandler(event:Event):void
		{
			if (left)
			{
				gradus -=  GRAD_STEP;
			}
			if (up)
			{
				speed +=  POWER;
			}
			if (right)
			{
				gradus +=  GRAD_STEP;
			}
			if (down)
			{
				speed -=  POWER;
			}
 
			speed *=  FRICTION;
			radian = (gradus * Math.PI) / 180;
			speedX = speed * Math.cos(radian);
			speedY = speed * Math.sin(radian);
 
			rotation = gradus;
			x +=  speedX;
			y +=  speedY;
 
			if (hitTestObject((parent as MovieClip).coin_mc))
			{
				(parent as MovieClip).coin_mc.x = Math.random() * 500;
				(parent as MovieClip).coin_mc.y = Math.random() * 500;
				count++;
				trace(count);
			}
 
			if (x > 500 - 40)
			{
				x = 500 - 40;
				speed =  -  speed * 0.5;
			}
			else if (x < 0 + 40)
			{
				x = 0 + 40;
				speed =  -  speed * 0.5;
			}
 
			if (y > 500 - 40)
			{
				y = 500 - 40;
				speed =  -  speed * 0.5;
			}
			else if (y < 0 + 40)
			{
				y = 0 + 40;
				speed =  -  speed * 0.5;
			}
		}
	}
}
Спасибо большое! Но это я как понимаю файл в AS а разве во fla ни чего писать не нужно?

Старый 22.08.2011, 07:27
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 5  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Если сделать класс Cars документ-классом (т.е. прописать его в панели Proprties во флеш иде), то нет.

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Цитата:
Сообщение от TocTbIP Посмотреть сообщение
Спасибо большое! Но это я как понимаю файл в AS а разве во fla ни чего писать не нужно?
Можете в .fla файле в кадре написать:
Код AS3:
var car:Car = new Car();
addChild(car);
Но можно и по другому.

Вы создаете файл Car.as и кладете его рядом с .fla файлом. Создаете MovieClip и рисуете в нем машинку. В библиотеке находите ваш MovieClip с машиной и нажимаете правой кнопкой и выбираете Properties. Нажимаете Export for AS и в поле Class пишете Car. Перетаскиваете MovieClip с машиной на сцену. Компилируете и запускаете.

Старый 22.08.2011, 17:55
TocTbIP вне форума Посмотреть профиль Отправить личное сообщение для TocTbIP Найти все сообщения от TocTbIP
  № 7  
Ответить с цитированием
TocTbIP

Регистрация: Apr 2010
Сообщений: 13
Всем спасибо буду побывать А вообще как лучше? Создавать As файл или в кадре все коды писать?

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Лучше создавать .as файл.

В этой теме недавно это обсуждали.


Последний раз редактировалось TWETTI; 22.08.2011 в 18:19.
Старый 22.08.2011, 18:15
TocTbIP вне форума Посмотреть профиль Отправить личное сообщение для TocTbIP Найти все сообщения от TocTbIP
  № 9  
Ответить с цитированием
TocTbIP

Регистрация: Apr 2010
Сообщений: 13
Вообще попробовал как вы сказали :-(
Создал файл fla и as в одном месте на диске С: в файл *.as я скопировал это :
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.display.MovieClip;
 
	public class Car extends Sprite
	{
		private static const POWER:Number = 0.96;
		private static const FRICTION:Number = 0.95;
		private static const GRAD_STEP:Number = 4.00;
 
		private var count:Number = 0;
 
		private var up:Boolean = false;
		private var down:Boolean = false;
		private var left:Boolean = false;
		private var right:Boolean = false;
 
		private var speed:Number = 0;
		private var speedX:Number;
		private var speedY:Number;
 
		private var gradus:Number = 0;
		private var radian:Number;
 
		public function Car()
		{
			if (stage)
			{
				init();
			}
			else
			{
				addEventListener(Event.ADDED_TO_STAGE, init);
			}
		}
 
		private function init(event:Event = null):void
		{
			stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler);
			stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler);
			addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
		}
 
		private function onKeyDownHandler(event:KeyboardEvent):void
		{
			if (event.keyCode == 37)
			{
				left = true;
			}
			else if (event.keyCode == 38)
			{
				up = true;
			}
			else if (event.keyCode == 39)
			{
				right = true;
			}
			else if (event.keyCode == 40)
			{
				down = true;
			}
		}
 
		private function onKeyUpHandler(event:KeyboardEvent):void
		{
			if (event.keyCode == 37)
			{
				left = false;
			}
			else if (event.keyCode == 38)
			{
				up = false;
			}
			else if (event.keyCode == 39)
			{
				right = false;
			}
			else if (event.keyCode == 40)
			{
				down = false;
			}
		}
 
		function onEnterFrameHandler(event:Event):void
		{
			if (left)
			{
				gradus -=  GRAD_STEP;
			}
			if (up)
			{
				speed +=  POWER;
			}
			if (right)
			{
				gradus +=  GRAD_STEP;
			}
			if (down)
			{
				speed -=  POWER;
			}
 
			speed *=  FRICTION;
			radian = (gradus * Math.PI) / 180;
			speedX = speed * Math.cos(radian);
			speedY = speed * Math.sin(radian);
 
			rotation = gradus;
			x +=  speedX;
			y +=  speedY;
 
			if (hitTestObject((parent as MovieClip).coin_mc))
			{
				(parent as MovieClip).coin_mc.x = Math.random() * 500;
				(parent as MovieClip).coin_mc.y = Math.random() * 500;
				count++;
				trace(count);
			}
 
			if (x > 500 - 40)
			{
				x = 500 - 40;
				speed =  -  speed * 0.5;
			}
			else if (x < 0 + 40)
			{
				x = 0 + 40;
				speed =  -  speed * 0.5;
			}
 
			if (y > 500 - 40)
			{
				y = 500 - 40;
				speed =  -  speed * 0.5;
			}
			else if (y < 0 + 40)
			{
				y = 0 + 40;
				speed =  -  speed * 0.5;
			}
		}
	}
}
А файл *.fla я сделал как сказал TWETTI
Цитата:
Но можно и по другому.

Вы создаете файл Car.as и кладете его рядом с .fla файлом. Создаете MovieClip и рисуете в нем машинку. В библиотеке находите ваш MovieClip с машиной и нажимаете правой кнопкой и выбираете Properties. Нажимаете Export for AS и в поле Class пишете Car. Перетаскиваете MovieClip с машиной на сцену. Компилируете и запускаете.
Сохранил и запустил. Ошибок не было но машина не двигается при нажатии клавиш. :-(

и
Код AS1/AS2:
if (hitTestObject((parent as MovieClip).coin_mc))
			{
				(parent as MovieClip).coin_mc.x = Math.random() * 500;
				(parent as MovieClip).coin_mc.y = Math.random() * 500;
				count++;
				trace(count);
			}
trace ни чего не выдает.


Последний раз редактировалось TocTbIP; 22.08.2011 в 18:18.
Старый 22.08.2011, 18:20
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 10  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
У вас на сцене есть мувиклип с именем "coin_mc"?

В библиотеке у вас также как на приложенной картинке?

Можете показать исходники?
Изображения
 


Последний раз редактировалось TWETTI; 22.08.2011 в 18:24.
Создать новую тему Ответ Часовой пояс GMT +4, время: 02:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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