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

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

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

Регистрация: Aug 2010
Адрес: Russia, Cheboksary
Сообщений: 50
Отправить сообщение для RomECH с помощью ICQ Отправить сообщение для RomECH с помощью Skype™
По умолчанию не меняется размер спрайта

Идея такова: нажимаем на мышь - появляется кружок, начинаем перемещать мышь - кружок вытягивается в овал. а у мя почему то появляется кружок, но размеры не меняются(

Код AS3:
//fla
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
 
var sp:Sprite = new Sprite();
var xcor:Number;
var ycor:Number;
var sc:Boolean = false;
 
function onDown (evt:MouseEvent) {
    sp = draw_round(mouseX,mouseY,1)
    var xcor:Number = mouseX;
    var ycor:Number = mouseY;
    addChild(sp);
    sc = true;
}
function scale (evt:Event) {
    if (sc)    {
        sp.width = mouseX-xcor;
        sp.height = mouseY-ycor;
    }
}
function onUp (evt:MouseEvent) {
    sc = false;
    addChild(sp);
}
 
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown)
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
stage.addEventListener(Event.ENTER_FRAME, scale);
Код AS3:
//draw_round.as
package
{
    import flash.display.*;
 
    public function draw_round(xCor:Number, yCor:Number, radius:Number):Sprite
    {
        var sp:Sprite = new Sprite();
        sp.graphics.lineStyle(1, 0x0);
        sp.graphics.drawCircle(xCor, yCor, radius);
        return (sp);
    }
}


Последний раз редактировалось RomECH; 18.09.2010 в 22:08.
Старый 18.09.2010, 23:38
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
К сожалению я не могу исправить ваш вариант, но вот набросал свой, возможно вас это натолкнёт на верный путь.
Код AS3:
var holder:Sprite=new Sprite()
addChild(holder);
 
var posX=0;
var posY=0
stage.addEventListener(MouseEvent.MOUSE_DOWN,mouse_down)
stage.addEventListener(MouseEvent.MOUSE_UP,mouse_up)
function mouse_down(e:MouseEvent){
	posX=mouseX;
	posY=mouseY;
	stage.addEventListener(MouseEvent.MOUSE_MOVE,mouse_move);
}
 
function mouse_move(e:MouseEvent){
	holder.graphics.clear();
	holder.graphics.lineStyle(0.1,0xFF0000);
	holder.graphics.drawCircle(0,0,1)
	holder.width=mouseX-posX;
	holder.height=mouseY-posY;
	holder.x=mouseX-holder.width/2;
	holder.y=mouseY-holder.height/2;
}
 
function mouse_up(e:MouseEvent){
	stage.removeEventListener(MouseEvent.MOUSE_MOVE,mouse_move)
}

Старый 19.09.2010, 16:10
RomECH вне форума Посмотреть профиль Отправить личное сообщение для RomECH Посетить домашнюю страницу RomECH Найти все сообщения от RomECH
  № 3  
Ответить с цитированием
RomECH

Регистрация: Aug 2010
Адрес: Russia, Cheboksary
Сообщений: 50
Отправить сообщение для RomECH с помощью ICQ Отправить сообщение для RomECH с помощью Skype™
я тоже думал об этом. НО. получается очень непродуктивная работа
не хотел так напрягать флеш, но видимо, придется

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Я немного переделал ваш код. Посмотрите:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite
	{
		private var circle:Sprite = new Sprite();
		private var xcor:Number;
		private var ycor:Number;
		private var isMouseDown:Boolean = false;
 
		public function Main()
		{
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown)
			stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
			stage.addEventListener(Event.ENTER_FRAME, onScale);
		}
 
		public function onDown(event:MouseEvent):void
		{
			circle = draw_round(10);
			circle.x = mouseX;
			circle.y = mouseY;
			addChild(circle);
			isMouseDown = true;
		}
 
		public function onScale(event:Event):void
		{
			if (isMouseDown)
			{
				circle.width = Math.abs(mouseX - circle.x);
				circle.height = Math.abs(mouseY - circle.y);
			}
		}
 
		public function onUp (event:MouseEvent):void
		{
			isMouseDown = false;
			//addChild(sp);
		}
 
		public function draw_round(radius:Number):Sprite
		{
			var sp:Sprite = new Sprite();
			sp.graphics.lineStyle(1);
			sp.graphics.drawCircle(0,0, radius);
			return(sp);
		}
 
	}
 
}

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

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

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


 


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


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