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

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

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Не забудьте сам контейнер добавить в контейнер, находящийся в DisplayList:
Код AS3:
this.addChild(cont);
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
ZackMercury и ещё вопрос: trace(this) пишет: [object MainTimeline] - он ссылается на stage ?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Код AS3:
stage
- это верхушка дисплей-пирамиды.
Код AS3:
MainTimeline
- это класс, который автоматически создаётся Flash IDE в целях абстрагировать вас от работы с классами. По сути он является главным классом, экземпляр которого создаётся автоматически и помещается в корень stage.
Код AS3:
stage.getChildAt(0)
- это и есть ваш MainTimeline.
Код AS3:
this is MainTimeline
только в коде главной линии времени(если вы напишите код в мувике, там this будет ссылаться на экземпляр конкретного мувика).

Я сказал, что вам не стоит трогать верхушку, и добавлять только в главный класс(в кадрах - MainTimeline).
__________________
There is no thing in this world that is not simple.

Старый 22.06.2016, 10:36
zackscript вне форума Посмотреть профиль Отправить личное сообщение для zackscript Найти все сообщения от zackscript
  № 14  
Ответить с цитированием
zackscript
 
Аватар для zackscript

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
как то не корректно стреляет мой кораблик
выстрел.swf   (2.1 Кб)

Код AS3:
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Sprite;
 
var speed:Number = 10;// скорость пули = 10
var depth:Number = 0;// глубина = 0
var nose:int = 50;// нос корябля
var xmov:Number;
var ymov:Number;
var cont:Sprite = new Sprite  ;
 
stage.addEventListener(MouseEvent.MOUSE_MOVE , moveShip);
stage.addEventListener(MouseEvent.CLICK, fire);
function moveShip(e:MouseEvent):void
{
	var xDiff = mouseX - ship.x;// находим  
	var yDiff = mouseY - ship.y;// координаты 
	var angle = Math.atan2(yDiff,xDiff);
	angle = angle * 180 / Math.PI;// переводим в градусы
	ship.rotation = angle;// поворачиваем
 
}
function fire(e:MouseEvent)
{
 
	var angle = ship.rotation;
	angle = angle * Math.PI / 180;
	var bull:MovieClip = new bul();
	cont.addChild(bull);
	this.addChild(cont);
	cont.getChildAt(cont.numChildren - 1).x = ship.x + nose * Math.cos(angle);
	cont.getChildAt(cont.numChildren - 1).y = ship.y + nose * Math.sin(angle);
	cont.getChildAt(cont.numChildren - 1).xmov = speed * Math.cos(angle);
	cont.getChildAt(cont.numChildren - 1).ymov = speed * Math.sin(angle);
	cont.getChildAt(cont.numChildren - 1).addEventListener(Event.ENTER_FRAME ,bullMove);
	function bullMove(e:Event)
	{
		cont.getChildAt(cont.numChildren - 1).x +=  cont.getChildAt(cont.numChildren - 1).xmov;
		cont.getChildAt(cont.numChildren - 1).y +=  cont.getChildAt(cont.numChildren - 1).ymov
	}
}
Вложения
Тип файла: swf выстрел.swf (2.1 Кб, 56 просмотров)

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
не делайте так. вы не в курсе, что это такое и как называется, поэтому просто не делайте так.
Код AS3:
function ...():void
{
   function ...():void
   {
   }
}
Правильно:
Код AS3:
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Sprite;
 
var speed:Number = 10;// скорость пули = 10
var depth:Number = 0;// глубина = 0
var nose:int = 50;// нос корабля
var xmov:Number;
var ymov:Number;
var bullets:Array = [];
 
stage.addEventListener(MouseEvent.MOUSE_MOVE , moveShip);
stage.addEventListener(MouseEvent.CLICK, fire);
stage.addEventListener(Event.ENTER_FRAME, update);
 
function moveShip(e:MouseEvent):void
{
	var xDiff = mouseX - ship.x;// находим  
	var yDiff = mouseY - ship.y;// координаты 
	var angle = Math.atan2(yDiff,xDiff);
	angle = angle * 180 / Math.PI;// переводим в градусы
	ship.rotation = angle;// поворачиваем
 
}
function fire(e:MouseEvent):void
{
 
	var angle = ship.rotation * Math.PI / 180;;
	var bull:MovieClip = new bul();
	addChild(bull);
	bullets.push(bull);
	bull.angle = angle;//ну можно и ymov/xmov записать, так просто короче, а производительность это сейчас не посадит.
	bull.x = ship.x + nose * Math.cos(angle);
	bull.y = ship.y + nose * Math.sin(angle);
}
 
function update(e:Event = null):void
{
	for(var i:int = 0; i < bullets.length; i ++)
	{
		bullets[i].x +=  Math.cos(bullets[i].angle) * speed;
		bullets[i].y +=  Math.sin(bullets[i].angle) * speed;
	}
}
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
ZackMercury Спасиб !

Старый 22.06.2016, 11:50
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 17  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Ещё неплохо бы сделать, чтобы как только пуля выходит за пределы экрана она удалялась из массива и дисплейлиста, иначе это приведёт к нарастающей нагрузке до полного зависания.
__________________
There is no thing in this world that is not simple.

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Цитата:
не делайте так. вы не в курсе, что это такое и как называется, поэтому просто не делайте так.
ZackMercury ты о void или о "функция в функции" ?

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
О функции в функции.
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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