![]() |
|
||||||||||
|
|||||
|
[+6 24.01.08]
[+4 02.11.07] |
Вообщем тема:
нарисовал руку держащую карандаш, и корабль, теперь надо сделать что бы рука как бы рисовала этот корабль, я делаю это с помощью маски, тоисть скачала Motion'ом двигаю руку, а потом маской обвожу там где она проходит, тоисть получаеться как будто корабль рисуеться, очень красиво, но!!! Поскольку я использую много ключевых кадров(в маске) флэшка быстро набирает размер, уже 200 килобайт, а особо ничего не происходит, рука просто нарисовла корабль, эта флэшка будет заставкой к сайту, и как вы понимаете весить должна не много! Существует ли другой лучший способ это сделать? Спасибо |
|
|||||
|
[+6 24.01.08]
[+4 02.11.07] |
Нашел 1 способ, делать что бы рисунок на ключевый кадрах не повторялся, тоисть несоклько масок, 1 маске делаем, сам корабль, на 2 мачты, на 3 паруса, значительно уменьшил обьем!
|
|
|||||
|
а можно посмотреть сам корабль?
|
|
|||||
|
А не проше саму маску анимировать?
__________________
Рисую и флэшу... |
|
|||||
|
loading 50%
|
Как сделать по нормальному (значит намного компактней):
1. на слое маски лежит маленький мувик с именем - размер кисти. 2. duplicateMovieClip этого клипа - то биш получили его копию 3. взять координаты _x, _y для клипа "рука" и дать их этому клипу. 4. ну и типа вызывать пока не нарисуется. Увсе. Где то был тут мой исходник на енту тему. ![]() |
|
|||||
|
4AM Games
|
Писал когда вышла восьмерка
в библиотеке должена быть картина, с линкейджом img1 в принципе, присобачив Path Ива можно сделать произвольную кисть. import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
import mx.transitions.Tween;
import mx.transitions.easing.Regular;
var image:BitmapData = BitmapData.loadBitmap("img1");
var field:BitmapData = new BitmapData(image.rectangle.width, image.rectangle.height, false, 0xFF6600);
createEmptyMovieClip("bmp_mc", 1);
bmp_mc.attachBitmap(field, 2);
function redraw(x:Number, y:Number):Void {
var rectangle:Rectangle = new Rectangle(x, y, 40, 40);
var point:Point = new Point(x, y);
field.copyPixels(image, rectangle, point);
}
var brush:Point = new Point(0, 0);
var w:Number = image.width;
var h:Number = image.height;
var bSize:Number = 40;
var tween:Tween = new Tween(brush, "x", Regular.easeInOut, 0-bSize, w, 2, true);
function moveBrush():Void {
_root.redraw(_root.brush.x, _root.brush.y);
}
function changeDirection():Void {
if(_root.brush.y < _root.h) {
_root.brush.y +=40;
var dest:Number = (_root.tween.position==w)?0-_root.bSize:w;
trace(_root.tween.position);
_root.tween.continueTo(dest);
}else{
delete _root.tween;
}
}
tween.onMotionChanged = moveBrush;
tween.onMotionFinished = changeDirection;
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
loading 50%
|
Цитата:
- типа нужны контуры картинки в виде непересекающейся кривой. и пара строк кода. ЗЫ: Пример кода от Nirth весьма интересный, если не в векторе картинка и 8 плеер, то лучше так. |
|
|||||
|
Ветеран форума
|
Цитата:
__________________
BestMasterиZация |
|
|||||
|
[+6 24.01.08]
[+4 02.11.07] |
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:33. |
|
|
« Предыдущая тема | Следующая тема » |
|
|