PDA

Просмотр полной версии : Не работает код по заданию высоты и ширины клипа..


dima_kiv
13.11.2008, 20:42
this.createEmptyMovieClip("container_mc", 1);
container_mc.loadMovie("1.png");
attachMovie("container_mc","container_mc",10000);
container_mc._x=2;
container_mc._y=2;
container_mc._width=73;
container_mc._height=75;

в итоге ничего не выводит на экран.
без указния ширины и высоты картинку выводит, но исходного размера, а мне ее уменьшенной надо выводить на экран. помогите пожалуйста..

Mnilionic
13.11.2008, 21:58
первой строкой вы создаёте клип
второй строкой грузите в него картинку
а третья шо делает?

Offi
13.11.2008, 22:13
в своё время тоже были проблемы с рисайзом картинки загруженной через loadMovie, почитайте это (http://00--00.livejournal.com/76544.html), мне помогло, думаю и Вам поможет:)

Добавлено через 23 минуты

var image_mc = this.createEmptyMovieClip("image_mc", 0);
var loaderListener:Object = {};
loaderListener.onLoadInit = function(image:MovieClip)
{
image._width=73;
image._height=75;
}
var imageLoader:MovieClipLoader = new MovieClipLoader();
imageLoader.addListener(loaderListener);
imageLoader.loadClip("1.png", image_mc);
image_mc._x=2;
image_mc._y=2;

dima_kiv
14.11.2008, 13:13
Offi спасибо, размер меняется, но вот картинка моя пикселями пошла, как ей поставить галочку allow smoothing програмно?
Mnilionic все, понял что ни к чему :)

skald
14.11.2008, 14:13
[QUOTE=dima_kiv;776965]Offi ... но вот картинка моя пикселями пошла, ...QUOTE]


в битмапу ее ...:)

dima_kiv
14.11.2008, 14:20
skald и как?:)

skald
14.11.2008, 14:29
это из хелпа ))))
по этим функциям и рекомендую искать ... я на прошлой неделе видел отличный материал на эту тему ... если найду, то выложу )))
какраз про сглаживание картинок при масштабировании ....


import flash.display.*;

this.createEmptyMovieClip("bmp1", this.getNextHighestDepth());
var bmpData1:BitmapData = new BitmapData(200, 200, false, 0xaa3344);
bmp1.attachBitmap(bmpData1, 2, "auto", true);



вот здесь вроде есть чутка ))) http://flasher.ru/forum/showthread.php?t=115695

dima_kiv
14.11.2008, 14:52
skald спасибо, если найдешь информацию обязательно скинь :)

есть такой вариант сглаживания изображения:

import flash.display.*;
_root.createEmptyMovieClip("pic",_root.getNextHighestDepth());
_root.createEmptyMovieClip("tmpic",_root.getNextHighestDepth());
var imageLoader:MovieClipLoader = new MovieClipLoader();
imageLoader.addListener(loaderListener);
imageLoader.loadClip("1/1.png", tmpic);
_root.tmpic._visible=false;
var bitmap:BitmapData = new BitmapData(_root.tmpic._width,_root.tmpic._height,true);
_root.pic.attachBitmap(bitmap,_root.pic.getNextHighestDepth(),"auto",true);
bitmap.draw(_root.tmpic);


добавим в начало кода:

var loaderListener:Object = {};
loaderListener.onLoadInit = function(image:MovieClip)
{
image._width=72;
image._height=79;
}

но сглаживания как такогого не происходит, картинка все равно идет пикселями.. в чем ошибка?

Mnilionic
14.11.2008, 17:06
import flash.display.*;
import flash.geom.Matrix;


var mc = this.createEmptyMovieClip("pic", this.getNextHighestDepth());
mc._x = 2; mc._y = 2;

var temp_mc = this.createEmptyMovieClip("tmpic", this.getNextHighestDepth());
temp_mc._visible = false;


var imageLoader:MovieClipLoader = new MovieClipLoader();
function onLoadInit(image:MovieClip){

// масштабируем жёстко
var bitmap:BitmapData = new BitmapData(79, 72, true);
var mtx:Matrix = new Matrix();
mtx.scale ( 79 / image._width , 72 / image._height)
bitmap.draw(image, mtx);
removeMovieClip(temp_mc); // убиваем не нужный более клип
mc.attachBitmap(bitmap, mc.getNextHighestDepth(), "auto", true);

/*
// просто сжимаем если небходимо потом обратно растягивать
var bitmap:BitmapData = new BitmapData(image._width, image._height, true);
bitmap.draw(image);
removeMovieClip(temp_mc); // убиваем не нужный более клип
mc.attachBitmap(bitmap, mc.getNextHighestDepth(), "auto", true);
with(mc){
_width = 79; _height = 72;
}
*/
}
imageLoader.addListener(this);
imageLoader.loadClip("pic1.jpg", temp_mc);

dima_kiv
14.11.2008, 17:35
спасибо за ответ. но тем не менее картинка все таки уменьшаять идет пикселями... я кинул исходник, посмотрите пожалуста.

Mnilionic
15.11.2008, 01:40
в общем, фиг знает, гладко масштабируется только через двойное фотканье

import flash.display.*;
import flash.geom.Matrix;

var mc = this.createEmptyMovieClip("pic", this.getNextHighestDepth());

var temp_mc = this.createEmptyMovieClip("tmpic", this.getNextHighestDepth());


var imageLoader:MovieClipLoader = new MovieClipLoader();
function onLoadInit(image:MovieClip){

// фоткаем большую и крепим
var temp_bitmap:BitmapData = new BitmapData(image._width, image._height, true);
temp_bitmap.draw(image);
image.attachBitmap(temp_bitmap, 1, "auto", true);

// фоткаем заново, уменьшаем и аттачим в целевой клип
var mtx:Matrix = new Matrix();
mtx.scale ( 200 / image._width ,268 / image._height);

var bitmap:BitmapData = new BitmapData(200, 268, true);
bitmap.draw(image, mtx);
mc.attachBitmap(bitmap, 2, "auto", true);

// убиваем не нужные более вещи
removeMovieClip(temp_mc);
temp_bitmap.dispose()
}
imageLoader.addListener(this);
imageLoader.loadClip("3.png", temp_mc);

dima_kiv
15.11.2008, 16:36
Mnilionic большое спасибо!