Показать сообщение отдельно
Старый 16.01.2012, 03:40
Quantum2010 вне форума Посмотреть профиль Отправить личное сообщение для Quantum2010 Найти все сообщения от Quantum2010
  № 9  
Ответить с цитированием
Quantum2010

Регистрация: Dec 2011
Адрес: Беларусь, Могилев
Сообщений: 16
Отправить сообщение для Quantum2010 с помощью ICQ
Код:
package {
	import Box2D.Dynamics.*;
	import Box2D.Common.Math.b2Vec2;
	import Box2D.Collision.b2AABB;
	import Box2D.Collision.Shapes.*;
	import flash.display.MovieClip;
	import flash.display.StageScaleMode;
	import flash.display.SimpleButton;
	import flash.display.Sprite;
	import flash.events.ProgressEvent;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;


	public class Menu extends MovieClip {

		//физический мир
		public var e:MouseEvent;
        
		public var btnP:SimpleButton = new btnPlay();
		public var btnQ:SimpleButton = new btnQuit();
		public var btnSL:SimpleButton = new btnSelectLevel();
		public var btnMG:SimpleButton = new btnMoreGames();
		public var btnI:SimpleButton = new btnInstructions();
		public var btnE:SimpleButton = new btnEditors();
		
		public var mcKey1:musicKey1 = new musicKey1();
		public var mcKey2:musicKey2 = new musicKey2();
		public var mcDynamic1:dynamic1 = new dynamic1();
		public var mcDynamic2:dynamic2 = new dynamic2();
		public var mc:box = new box();
		public var m_world:b2World;
		public var m_iterations:int = 10;
		public var m_timeStep:Number = 1 / 30;
		public var m_physScale:Number = 30;
		public var xcoord = 1 / 30;
		public var ycoord = 1 / 30;

		public function Menu():void {
			//рамки физмира
			var worldAABB:b2AABB = new b2AABB();
			worldAABB.lowerBound.Set(-1000.0, -1000.0);
			worldAABB.upperBound.Set(1000.0, 1000.0);
			//вектор гравитации
			var gravity:b2Vec2 = new b2Vec2(0.0,18.0);
			var doSleep:Boolean = true;
			m_world = new b2World(worldAABB,gravity,doSleep);
			//создаем статическую планку
			addFon();
			addForm();
			addMusicKey1(e);
			addDynamic1(e);
			addNazva();
			addAllButtons();
			addLetter(false);
			//запускаем обновление мира
			addEventListener(Event.ENTER_FRAME, Update);
		}
		//счетчик для частоты выпадения кирпичей
		var zt:int = 0;
		//частота выпадения кирпичей (больше - реже)
		var q:int = 10;

		//обновление мира
		function Update(e:Event) {
			//выпадаем кирпич
			if (zt > q) {
				zt = 0;
				addLetter(true);
			}
			//приращиваем счетчик выпадения кирпичей
			zt++;
			//"делаем шаг" физического мира - тут рассчитываются положения физических тел
			m_world.Step(m_timeStep, m_iterations);
			//пробегаем по всем физическим телам и двигаем их мувики на свои места
			//"их мувики" храним в пользовательских данных тела
			for (var bb:b2Body = m_world.m_bodyList; bb; bb = bb.m_next) {
				if (bb.m_userData is Sprite && ! bb.IsStatic()) {
					bb.m_userData.x = bb.GetPosition().x * m_physScale;//X
					bb.m_userData.y = bb.GetPosition().y * m_physScale;//Y
					bb.m_userData.rotation = bb.GetAngle() * (180/Math.PI);//поворот
				}
				//если тело за пределами экрана - убиваем его и его мувик
				if (bb.GetPosition().y > 14 && bb.m_userData is Sprite) {
					Game.gameLink.removeChild(bb.m_userData as Sprite);
					m_world.DestroyBody(bb);
				}
			}
		}
		//функция добавления кнопок управления игрой.
		function addAllButtons():void {
			
		}
		//функция добавления скрипичного ключа(1).
		function addMusicKey1(e:MouseEvent):void {
			trace("Работает 1");
			mcKey1.x = 155;
			mcKey1.y = 270;
			Game.gameLink.addChild(mcKey1);
		}
		//функция добавления скрипичного ключа(2).
		function addMusicKey2(e:MouseEvent):void {
			trace("Работает 2");
			Game.gameLink.removeChild(mcKey1);
			mcKey2.x = 155;
			mcKey2.y = 270;
			Game.gameLink.addChild(mcKey2);
		}
		//функция добавления динамика(1).
		function addDynamic1(e:MouseEvent):void {
			trace("Работает 1 дин");
			mcDynamic1.x = 389;
			mcDynamic1.y = 270;
			Game.gameLink.addChild(mcDynamic1);
		}
		//функция добавления динамика(2).
		function addDynamic2(e:MouseEvent):void {
			trace("Работает 2 дин");
			Game.gameLink.removeChild(mcDynamic1);
			mcDynamic2.x = 389;
			mcDynamic2.y = 270;
			Game.gameLink.addChild(mcDynamic2);
		}
		//функция добавления названия игры.
		function addNazva():void {
			var mc:nazva = new nazva();
			mc.x = 272;
			mc.y = 172;
			Game.gameLink.addChild(mc);
		}
		//функция добавления фона
		function addFon():void {
			var mc:blackFon = new blackFon();
			mc.x = 275;
			mc.y = 200;
			Game.gameLink.addChild(mc);
		}
		//функция добавления статического тела меню
		function addForm():void {
			var body:b2Body;
			var bodyDef:b2BodyDef = new b2BodyDef();

			var boxDef:b2PolygonDef = new b2PolygonDef();
			var mc:mainMenu = new mainMenu();


			mc.x = 275;
			mc.y = 200;
			bodyDef.position.x = mc.x * xcoord;
			bodyDef.position.y = mc.y * ycoord;

			//создаем тело - прямоугольник. Физическое тело будет чутка меньше мувика - для реализьма.
			boxDef.SetAsBox((mc.width-2)/m_physScale/2, (mc.height-2)/m_physScale/2);
			//в пользовательские данные тела запихиваем мувик
			bodyDef.userData = mc;
			//создаем тело
			body = m_world.CreateBody(bodyDef);
			//придаем ему форму
			body.CreateShape(boxDef);
			//офизичиваем тело на основе данных о массе и форме
			body.SetMassFromShapes();
			//для лучшего определения столкновений ставим true. Увлекаться этим параметром не рекомендуется - если тел много, будут тормоза
			body.SetBullet(true);
			//добавляем мувик тела на сцену
			Game.gameLink.addChild(mc);
		}
		//функция добавления мячика
		function addLetter(l:Boolean) {
			if (l) {
				//тело
				var body:b2Body;
				//определитель тела
				var bodyDef:b2BodyDef = new b2BodyDef();
				//форма тела
				var boxDef:b2CircleDef = new b2CircleDef();
				//мувик тела
				var mc:box = new box();
				//и кладем определитель тела где-нибудь чуть выше верхнего предела экрана
				bodyDef.position.x = Math.random() * 10 + 4;
				bodyDef.position.y = -1;
				//если делаем кирпич - задаем плотность, трение, "прыгучесть" тела
				//не задаем, если - планка, в этом случае тело будет статическим
				boxDef.radius = 0.48;
				boxDef.density = 0.3;
				boxDef.friction = 0.5;
				boxDef.restitution = 0.7;
				//в пользовательские данные тела запихиваем мувик
				bodyDef.userData = mc;
				//создаем тело
				body = m_world.CreateBody(bodyDef);
				//придаем ему форму
				body.CreateShape(boxDef);
				//офизичиваем тело на основе данных о массе и форме
				body.SetMassFromShapes();
				//для лучшего определения столкновений ставим true. Увлекаться этим параметром не рекомендуется - если тел много, будут тормоза
				body.SetBullet(true);
				//добавляем мувик тела на сцену
				Game.gameLink.addChild(mc);
			}
		}
	}
}
А вот какие ошибки выдает:
Код:
1067: Неявное приведение значения типа btnQuit к несоответствующему типу flash.display:SimpleButton.
1067: Неявное приведение значения типа btnSelectLevel к несоответствующему типу flash.display:SimpleButton.
1067: Неявное приведение значения типа btnMoreGames к несоответствующему типу flash.display:SimpleButton.
1067: Неявное приведение значения типа btnInstructions к несоответствующему типу flash.display:SimpleButton.
1067: Неявное приведение значения типа btnEditors к несоответствующему типу flash.display:SimpleButton.
Смысл ошибок я понимаю!!!Неявное приведение, но ведь это кнопки и базовый класс стоит SimpleButton!!!Что за глюк? С Флешем проблем быть не может?