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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.07.2007, 21:25
p.kiev.ua вне форума Посмотреть профиль Отправить личное сообщение для p.kiev.ua Найти все сообщения от p.kiev.ua
  № 11  
Ответить с цитированием
p.kiev.ua
[+1.3 10.06.07]

Регистрация: Jun 2007
Сообщений: 60
А как для каждого отрезка создавать новый мувик?

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

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
Цитата:
Сообщение от p.kiev.ua
А как для каждого отрезка создавать новый мувик?
Вам же сказали, что этот метод отпадает... Изучайте класс BitmapData...

з.ы. через BitmapData я бы так делал: в том месте, где находится ластик, копировал пиксели фона и переносил бы на основное изображение

Старый 12.07.2007, 23:16
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 13  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
примерная схема
Код:
package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.geom.Point;

	public class  Test extends Sprite{
		private var render:Function=myNull;
		private var canvas:Sprite;
		private var pen:Point;
		private var maxLength:Number=7;
		private var drawBut:But;
		private var clearBut:But;
		public function Test(){
			canvas=new Sprite();
			canvas.graphics.beginFill(0xCCCCCC);
			canvas.graphics.drawRect(0,0,550,400);
			addChild(canvas);
			drawBut=new But("draw");
			addChild(drawBut);
			clearBut=new But("clear");
			clearBut.x=drawBut.width+10;
			
			addChild(clearBut);
			drawBut.addEventListener(MouseEvent.CLICK,drawClick);
			clearBut.addEventListener(MouseEvent.CLICK,clearClick);
			canvas.addEventListener(MouseEvent.MOUSE_DOWN,startRender);
			canvas.addEventListener(MouseEvent.MOUSE_UP,stopRender);
		}
		private function drawClick(evnt:MouseEvent):void{
			render=myDraw;
			drawBut.backgroundColor=0xFFFFFF;
			clearBut.backgroundColor=0x999999;
		}
		private function clearClick(evnt:MouseEvent):void{
			render=myClear;
			drawBut.backgroundColor=0x999999;
			clearBut.backgroundColor=0xFFFFFF;
		}
		
		private function startRender(evnt:MouseEvent):void{
			canvas.addEventListener(MouseEvent.MOUSE_MOVE,render);
			pen=new Point(mouseX,mouseY);
		}
		private function stopRender(vnt:MouseEvent):void{
			canvas.removeEventListener(MouseEvent.MOUSE_MOVE,render);
		}
		private function myDraw(evnt:MouseEvent):void{
			var p:Point=new Point(mouseX,mouseY);
			//рисуем только больше минимальной длины..
			if(Point.distance(p,pen)>=maxLength){
				var s:Sprite=new Sprite();
				canvas.addChild(s);
				s.graphics.lineStyle(1,0xFF0000);
				s.graphics.moveTo(pen.x,pen.y);
				s.graphics.lineTo(mouseX,mouseY);
				pen=p;
			}
		}
		private function myClear(evnt:MouseEvent):void{
			for(var i:int=0;i<canvas.numChildren;i++){
				var line:Sprite=canvas.getChildAt(i) as Sprite;
				if(line.hitTestPoint(mouseX,mouseY)) canvas.removeChild(line);
			}
		}
		private function myNull(evnt:MouseEvent):void{
		}
	}
}

import flash.text.TextField;
class But extends TextField{
	public function But(txt:String){
		text=txt;
		autoSize="left";
		selectable=false;
		background=true;
		backgroundColor=0x999999;
	}
}

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

Регистрация: Jun 2007
Сообщений: 7
Если фон не однотонный, как задать именно те пиксели которые должны быть в данном месте?

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

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
Цитата:
Сообщение от wandr1
Если фон не однотонный, как задать именно те пиксели которые должны быть в данном месте?
Через BitmapData.getPixel()
з.ы. а лучше пиксели изображения(которое мы стираем) делать просто прозрачными.

Старый 25.07.2007, 16:34
wandr1 вне форума Посмотреть профиль Отправить личное сообщение для wandr1 Найти все сообщения от wandr1
  № 16  
Ответить с цитированием
wandr1

Регистрация: Jun 2007
Сообщений: 7
В битмап загнал, спасибо. Но как делать его прозрачным при ster = true
if ((m_x>0 && m_x<310) && (m_y>0 && m_y<310)) {
child.graphics.lineTo(avatar_mc.mouseX, avatar_mc.mouseY);
}if(ster){??????????}else{
canvas.bitmapData.draw(child);}
}

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

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
Код:
setPixel32(x,y,0x00000000);

Старый 25.07.2007, 17:04
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 18  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
wandr1, отредактируйте свой пост и оформите код тегами [code][/code].

Старый 25.07.2007, 21:47
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 19  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
с битмапом, канеш удобнее..
как вариант: рисовать в невидимом шейпе, который срисовывать в битмап с разным блендМод, в зависимости от режима рисования или стерки:

Код:
package {
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	import flash.text.TextField;

	public class DrawTest extends Sprite {
		
		var colors:Array=[0,0xFF0000,0x00FF00,0x0000FF];
		var sizes:Array=[8,12,16,20];
		var drawColor:Number=0;
		var drawSize:Number=12;
		var drawMode:Boolean=true;
		
		var modeSelector:TextField;
		var drawSprite:Sprite;
		var drawShape:Shape=new Shape();
		
		var canvas:Bitmap;
		var startPoint:Point;

		public function DrawTest(){
			modeSelector=new TextField();
			modeSelector.selectable=false;
			modeSelector.background=true;
			modeSelector.backgroundColor=0xEEEEEE;
			modeSelector.text="draw";
			modeSelector.width=50;
			modeSelector.height=20;
			modeSelector.addEventListener(MouseEvent.CLICK,switchMode);
			addChild(modeSelector);
			
			var i:Number=0;
			for(i=0;i<colors.length;i++){
				var cs:ColorSelector=new ColorSelector(colors[i]);
				cs.x=100+60*i;
				cs.y=20;
				addChild(cs);
				cs.addEventListener(MouseEvent.CLICK,switchColor);
			}
			////////////////
			for(i=0;i<sizes.length;i++){
				var ss:SizeSelector=new SizeSelector(sizes[i]);
				ss.x=100+60*i;
				ss.y=60;
				addChild(ss);
				ss.addEventListener(MouseEvent.CLICK,switchSize);
			}
			//////////////
			drawSprite=new Sprite();
			drawSprite.y=80;
			drawSprite.graphics.beginFill(0xF5F5F5);
			drawSprite.graphics.drawRect(0,0,550,300);
			//просто закрасил, можно картнку  пложить или еще чего..
			//drawSprite.addChild(new Bitmap(new Pic(0,0)));//Pic-картинка в библиотеке
			addChild(drawSprite);
			
			canvas=new Bitmap(new BitmapData(550,300,true,0));
			drawSprite.addChild(canvas);
			
			drawSprite.addEventListener(MouseEvent.MOUSE_DOWN,startDraw);
			drawSprite.addEventListener(MouseEvent.MOUSE_UP,stopDraw);
		}
		private function switchMode(e:MouseEvent):void{
			drawMode=!drawMode;
			modeSelector.text=drawMode ?  "draw" : "erase";
		}
		private function switchColor(e:MouseEvent):void{
			var s=e.target as ColorSelector;
			drawColor=s.color;
		}
		private function switchSize(e:MouseEvent):void{
			var s=e.target as SizeSelector;
			drawSize=s.size;
		}
		private function startDraw(e:MouseEvent):void{
			drawSprite.addEventListener(Event.ENTER_FRAME,render);
			startPoint=new Point(drawSprite.mouseX,drawSprite.mouseY);
		}
		private function stopDraw(e:MouseEvent):void{
			drawSprite.removeEventListener(Event.ENTER_FRAME,render);
		}
		private function render(e:Event):void{
			drawShape.graphics.lineStyle(drawSize,drawColor);
			drawShape.graphics.moveTo(startPoint.x,startPoint.y);
			startPoint=new Point(drawSprite.mouseX,drawSprite.mouseY);
			drawShape.graphics.lineTo(startPoint.x,startPoint.y);
			canvas.bitmapData.draw(drawShape,null, null,drawMode? null:BlendMode.ERASE);
			drawShape.graphics.clear();
		}
	}
}
/////////////////////////////////
import flash.display.Sprite;
class SizeSelector extends Sprite{
	public var size:Number;
	public function SizeSelector(d:Number){
		size=d;
		graphics.beginFill(0xCCCCCC);
		graphics.drawCircle(0,0,d/2);
	}
}
////////////////////////////////////////
class ColorSelector extends Sprite{
	public var color:Number;
	public function ColorSelector(clr:Number){
		color=clr;
		graphics.beginFill(clr);
		graphics.drawCircle(0,0,15);
	}
}

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

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

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


 


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


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