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

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

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

Регистрация: Apr 2012
Сообщений: 213
AS у меня пока в стадии изучения) Хотелось бы чего-то конкретнее по теме

Добавлено через 12 минут
Ну так что? Ещё кто-то чем-то может помочь?

Старый 14.11.2012, 01:09
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 12  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Пожалуйста, не нужно много раз спрашивать "что никто не может помочь?" - вы только создаете шум, но не увеличиваете ваши шансы получить помощь. Ваши шансы сильно возрастут если вы начнете что-то делать, и потом покажете ваш код. А может и не покажете, потому что и без того будет работать.
__________________
Hell is the possibility of sanity

Старый 14.11.2012, 09:31
Srednas вне форума Посмотреть профиль Отправить личное сообщение для Srednas Найти все сообщения от Srednas
  № 13  
Ответить с цитированием
Srednas

Регистрация: Nov 2010
Сообщений: 430
Для рисования (визуализации) вам понадобится (если нужен, конечно) класс Graphics, полезны будут moveTo, lineTo и т.д.
Для хранения координат можно использовать классы Point или Vector3D.
Нарисовать можно так:
Код AS3:
// Создаете Point'ы:
var p1:Point = new Point();
p1.x = 0;
p1.y = 0;
var p2:Point = new Point();
p2.x = 100;
p2.y = 100;
// создаете фигуру для отображения
var v1:Shape() = new Shape();
// рисуем линию
v1.Graphics.moveTo(p1.x, p1.y);
v1.Graphics.lineTo(p2.x, p2.y);
С расчетами разберитесь и «рисуйте».
__________________
Лучше спросить и выставить себя дураком на пять минут, чем не спросить и остаться дураком на всю жизнь.


Последний раз редактировалось Srednas; 14.11.2012 в 09:52.
Старый 14.11.2012, 11:45
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 14  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Держите простой набросок рендеринга векторов. Смысл следующий: у вас есть массивы основных векторов (которые пользователем задаются) и, соответственно, массивы получившихся векторов (те, которые показывают результат операции).

При обновлении данных об основных векторах или изменении операции, собственно, когда нужно отрисовать новую картинку, вы должны очистить массив resultVectors и заполнить его данными о новых получившихся векторах. Так же и с массивом currentVectors. Ну и вызвать метод renderScene после этого.

Надеюсь примерно понятно объяснил.

Так, как я не знаю, в каком формате ты будете хранить данные о векторе, оставил пустым метод drawVector. Думаю, сами разберетесь.

Кстати для рисования стрелочек в помощь вам метод drawArrowPart. Последний параметр angle в радианах и указывает направление стрелки.

Код AS3:
var currentVectors:Array = [];
var resultVectors:Array = [];
 
var drawContainer:Sprite = new Sprite();
addChild(drawContainer);
drawContainer.x = drawContainer.y = 20;
 
var drawGraphics:Graphics = drawContainer.graphics;
 
var sceneSize:Rectangle = new Rectangle(0,0,300,300);
var sceneCenterPoint:Point = new Point(20,200);
 
function drawArrowPart(gr:Graphics,x:Number,y:Number,angle:Number = 0):void {
	var subLength:Number = 10;
	var subAngle:Number = 15;
	var subRadAngle:Number = Math.PI - (subAngle * Math.PI / 180);
	var subX:Number;
	var subY:Number;
 
	subX = x + Math.cos(angle - subRadAngle) * subLength;
	subY = y + Math.sin(angle - subRadAngle) * subLength;
	gr.moveTo(x,y);
	gr.lineTo(subX,subY);
 
	subX = x + Math.cos(angle + subRadAngle) * subLength;
	subY = y + Math.sin(angle + subRadAngle) * subLength;
	gr.moveTo(x,y);
	gr.lineTo(subX,subY);
}
function drawVector(gr:Graphics, vector:*, color:uint) {
	// Here we need to draw vector
}
function renderScene():void {
	drawGraphics.clear();
 
	// draw axis
	drawGraphics.lineStyle(1,0x0000000, 0.25);
	drawGraphics.drawRect(sceneSize.left, sceneSize.top, sceneSize.width, sceneSize.height );
	drawGraphics.lineStyle(1,0x0000000,1);
	// x
	drawGraphics.moveTo(sceneSize.left, sceneCenterPoint.y);
	drawGraphics.lineTo(sceneSize.right, sceneCenterPoint.y);
	drawArrowPart(drawGraphics, sceneSize.right, sceneCenterPoint.y, 0);
 
	// y
	drawGraphics.moveTo(sceneSize.left + sceneCenterPoint.x,  sceneSize.bottom);
	drawGraphics.lineTo(sceneSize.left + sceneCenterPoint.x, sceneSize.top);
	drawArrowPart(drawGraphics, sceneSize.left + sceneCenterPoint.x, sceneSize.top, -Math.PI / 2);
 
	// now render current vectors;
	var k:int;
	for (k = 0; k < currentVectors.length; k++) {
		drawVector(drawGraphics, currentVectors[k], 0xFF0000);
	}
	for (k = 0; k < resultVectors.length; k++) {
		drawVector(drawGraphics, resultVectors[k], 0x30A4AE);
	}
}
 
renderScene();
__________________
hauts.ru

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

Регистрация: Apr 2012
Сообщений: 213
Извините меня за мою непонятливость, я не совсем понял, что нужно писать в метод drawVector. И вообще код не совсем понятен Не подскажите, где я бы смог прочитать про команды, которые использованы в коде.

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Код AS3:
// Создаем массив для векторов, которые определяются пользователем
var currentVectors:Array = [];
 
// Создаем массив для векторов, которые создаются после какой-либо операции с векторами
var resultVectors:Array = [];
 
// Создаем новый спрайт и размещаем его на сцене. Он нужен для того, чтобы отрисовывать в него графику
var drawContainer:Sprite = new Sprite();
addChild(drawContainer);
drawContainer.x = drawContainer.y = 20;
 
// Сохраняем ссылку на свойство graphics у нового спрайта, чтобы не обращаться каждый раз  drawContainer.graphics. а просто drawGraphics.
var drawGraphics:Graphics = drawContainer.graphics;
 
// Сохраняем размер области для отрисовки 
var sceneSize:Rectangle = new Rectangle(0,0,300,300);
 
// Сохраняем положение центра координат относительно области отрисовки
var sceneCenterPoint:Point = new Point(20,200);
 
// Метод для рисования кусочков стрелок
// Принимает параметры: 
// gr:Graphics - это ссылка на объект graphics, с помощью которого (в который) будем рисовать
// x - координата икс крайней точки стрелки
// y - коордната игрек крайней точки стрелочки
// angle - угол в радианах, характеризующий направление стрелки
function drawArrowPart(gr:Graphics,x:Number,y:Number,angle:Number = 0):void {
	var subLength:Number = 10;
	var subAngle:Number = 15;
	var subRadAngle:Number = Math.PI - (subAngle * Math.PI / 180);
	var subX:Number;
	var subY:Number;
 
	subX = x + Math.cos(angle - subRadAngle) * subLength;
	subY = y + Math.sin(angle - subRadAngle) * subLength;
	gr.moveTo(x,y);
	gr.lineTo(subX,subY);
 
	subX = x + Math.cos(angle + subRadAngle) * subLength;
	subY = y + Math.sin(angle + subRadAngle) * subLength;
	gr.moveTo(x,y);
	gr.lineTo(subX,subY);
}
 
// Метод для отрисовки вектора. Принимает параметры
// gr:Graphics - это ссылка на объект graphics, с помощью которого (в который) будем рисовать
// vector - это экземпляр класса, хранящего параметры вектора. Как вы его напишите, так и будет. Я бы использовал поля x1,x2,y1,y2 для описания вектора.
// color - цвет отрисовки
function drawVector(gr:Graphics, vector:*, color:uint) {
	// Здесь берем объект графикс, ставим ему нужный цвет для отрисовки
	// Потом берем вектор, который передается сюда
	// Потом используя данные вектора отрисовываем его
}
 
// Метод для отрисовки сцены. При изменении параметрой вводимых векторов или при изменении операции над ними - вызываем этот метод. Точнее сначала обновляем массивы векторов, которые используются, потом вызываем.
function renderScene():void {
	// Очищаем отрисованную графику, чтобы предыдущие картинки не накладывались с новой
	drawGraphics.clear();
 
	// Рисуем оси координат и рамку
	// draw axis
	drawGraphics.lineStyle(1,0x0000000, 0.25);
	drawGraphics.drawRect(sceneSize.left, sceneSize.top, sceneSize.width, sceneSize.height );
	drawGraphics.lineStyle(1,0x0000000,1);
	// x
	drawGraphics.moveTo(sceneSize.left, sceneCenterPoint.y);
	drawGraphics.lineTo(sceneSize.right, sceneCenterPoint.y);
	drawArrowPart(drawGraphics, sceneSize.right, sceneCenterPoint.y, 0);
 
	// y
	drawGraphics.moveTo(sceneSize.left + sceneCenterPoint.x,  sceneSize.bottom);
	drawGraphics.lineTo(sceneSize.left + sceneCenterPoint.x, sceneSize.top);
	drawArrowPart(drawGraphics, sceneSize.left + sceneCenterPoint.x, sceneSize.top, -Math.PI / 2);
 
	// Теперь проходимся по массивам с векторами и отрисоываем их.
	// now render current vectors;
	var k:int;
	for (k = 0; k < currentVectors.length; k++) {
		drawVector(drawGraphics, currentVectors[k], 0xFF0000);
	}
	for (k = 0; k < resultVectors.length; k++) {
		drawVector(drawGraphics, resultVectors[k], 0x30A4AE);
	}
}
// Первичный вызов для того, чтобы отрисовать оси координат.
renderScene();

Digital, задавайте конкретнее вопросы, описывать весь код и как он работает довольно проблематично.

И, кстати, не нужно в личных сообщениях переспрашивать, ответят ли вам. У каждого на форуме есть свои дела, свое желание помочь и, в конце-концов, свой часовой пояс.

Добавлено через 2 минуты
Цитата:
я не совсем понял, что нужно писать в метод drawVector.
— вам необходимо создать класс с описанием вектора. Например полями x1 x2 y1 y2. Ну и, по желанию, добавить туда методы для складывания, вычитания и т.д. с другими векторами. В методе drawVector вам необходимо брать параметры поступающего в этот метод вектора и отрисовывать его в объект graphics, который так же поступает в drawVector.
__________________
hauts.ru

Старый 15.11.2012, 22:21
Digital вне форума Посмотреть профиль Отправить личное сообщение для Digital Найти все сообщения от Digital
  № 17  
Ответить с цитированием
Digital

Регистрация: Apr 2012
Сообщений: 213
А обязательно класс писать для drawvector? Мне же всего на четыре кнопки, не очень то и громоздко будет=).

Старый 15.11.2012, 22:43
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 18  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Сообщение от Digital Посмотреть сообщение
А обязательно класс писать для drawvector? Мне же всего на четыре кнопки, не очень то и громоздко будет=).
Такая проблема написать?
Код AS3:
public class MyVector
{
    public var x1:Number = 0.0;
    public var y1:Number = 0.0;
 
    public var x2:Number = 1.0;
    public var y2:Number = 0.0;
}

Старый 16.11.2012, 00:37
Digital вне форума Посмотреть профиль Отправить личное сообщение для Digital Найти все сообщения от Digital
  № 19  
Ответить с цитированием
Digital

Регистрация: Apr 2012
Сообщений: 213
Цитата:
Сообщение от i.o. Посмотреть сообщение
Такая проблема написать?
Код AS3:
public class MyVector
{
    public var x1:Number = 0.0;
    public var y1:Number = 0.0;
 
    public var x2:Number = 1.0;
    public var y2:Number = 0.0;
}
Вы написали его слова кодом)) Это я и так понимаю) Проблема в том, что я только начал учить классы, достойных видеоуроков(да и не только видео) мало, а на курс с изифлэша как-то денег жалко) Вобщем я не знаю как использовать класс в проэкте фла

Добавлено через 26 минут
Что писать в классе я уже понял и я понимаю, что там нужно писать для суммы и разности векторов. Я не понимаю как привязать этот класс к коду. Очевидно это надо сделать в функции DrawVector, но как в силу своих пока ещё не больших знаний - не знаю.


Последний раз редактировалось Digital; 16.11.2012 в 01:00.
Старый 16.11.2012, 01:52
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 20  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Лучше почитать Колина Мука http://book.tr200.net/v.php?id=277635 и писать всё в редакторе кода FlashDevelop, тогда всё станет на свои места.

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

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

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


 


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


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