PDA

Просмотр полной версии : Bitmap Data локально и на сервере


$mival
03.03.2008, 00:49
только что умер последний нерв.
маюсь уже несколько дней.

пробовал код с сайта - работает,
немного редактирую под свой проект - не работает :umnik2:


private var _tbuttons:Array;
private var _tbuttArray:Array;

public Main()
{
_tbuttons = new Array("1.jpg", "2.jpg");
menuButtonsLoading();
}

private function menuButtonsLoading():Void
{
if(_tbuttons.length==0) return;
var bt = _tbuttons.shift();
var depth:Number = _root.getNextHighestDepth();
var temp:MovieClip = _root.createEmptyMovieClip("tmp" + depth, depth);
var loader = new MovieClipLoader();
loader.addListener(this);
loader.loadClip(bt, temp);
}

private function onLoadInit(mc:MovieClip):Void
{
var bitmap:BitmapData = new BitmapData(mc._width, mc._height, true, 0);
bitmap.draw(mc);
_tbuttArray.push(bitmap);
menuButtonsLoading();
}

потом через некоторое время, несколько секунд точно, в другом классе в цикле:

mc.attachBitmap(_tbuttArray[i], 0, "auto", true);

прикол в том что локально всё работает безотказно, зато на сервере нет.
при атаче битмэпа заливается только белый фон (ну или тот который мы укажем 4ым параметром в new BitmapData)

пробовал даже сразу за строкой bitmap.draw(mc); атачить битмэп в пустой клип, но результат такой же - заливается фон и всё :(

iNils
03.03.2008, 01:38
Еще раз, только русским языком и осмысленно.
PS. Только атТач и битмАп.

DarkLight
03.03.2008, 01:47
Проверьте политики безопасности, у draw более жесткие ограничения, чем у загрузки. У меня такая проблема возникала, когда в путях было www, которое флеш считает отдельным поддоменом, и без crossdomain.xml draw имеет тенденцию не работать. Вообще - белый фон при draw = ограничения безопасности не дали отрисовать.

iNils
03.03.2008, 01:49
Там путь относительный из той же папки, что и флеш.

etc
03.03.2008, 02:03
Кроме того, код синтаксически неверен и почему-то кое-где отсутствует типизация.

$mival
03.03.2008, 10:48
вот другой пример:

import flash.display.BitmapData;

function init()
{
createEmptyMovieClip("image_mc", 0);
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(this);
mcl.loadClip("img.jpg", image_mc);
}

function onLoadInit(target)
{
var width:Number = target._width;
var height:Number = target._height;
var myBitmapData:BitmapData = new BitmapData(width, height);
myBitmapData.draw(target);
target.removeMovieClip();

createEmptyMovieClip("image_mc1", 1);
image_mc1.attachBitmap(myBitmapData, 0, "auto", true);
image_mc1._x = width;
}

init();

если относительная ссылка (т.е. на этом же домене) то всё ок, если на другом серваке, то не работает. кроссдомэйн xml там есть. во флешке есть ещё пара классов которые юзают битмэпы и у них всё грузится, то есть это не настройки безопасности :wacko:

wvxvw
03.03.2008, 11:07
Чудес не бывает :banned: политики безопасности (перепроверь на точное совпадение ДНСов).

А вообще, myBitmapData.draw(target._parent); Чтобы не мучаться...