![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2014
Сообщений: 5
|
Доброго времени суток.
Суть кода - загружает картинку в рамочке. Позволяет мышкой прокручивать (до рамки), роликом мышки масштабировать изображение. При запуске во Adobe Flash CS6 код исполняется великолепно. При запуске в браузере нет графики. Цель - выявить причину. package {
//http://cs623426.vk.me/v623426204/3556/pKJTdrHkvio.jpg
//import flash.display.Sprite;
//import flash.display.Bitmap;
//import flash.display.Shape;
//import flash.events.MouseEvent;
import flash.geom.Matrix;
import flash.net.URLRequest;
//import flash.events.*;
import flash.display.*;
//import flash.text.*;
import flash.events.*;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.utils.Timer;
public class CastleInterface extends Sprite {
//private static var _map_Bitmap:ImportedImage1;
private var mapCont:Sprite;
private var mapMask:Shape;
private var border:Shape;
private var center:Shape;
var size:int;
var CityBitmapLoader:Loader;
var CityBitmap:Bitmap;
public function CastleInterface() {
//const IMAGE_URL:String = "http://**********/58412586/image.png";
const IMAGE_URL:String = "http://**********/58412619/image.png";
CityBitmapLoader = new Loader();
CityBitmapLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, CityBitmapLoader_complete);
CityBitmapLoader.load(new URLRequest(IMAGE_URL));
/*addChild(romeImageBitmap);
var romeImageData:RomeImage = new RomeImage();
var romeImageBitmap:Bitmap = new Bitmap(romeImageData);
addChild(romeImageBitmap);*/
//var mapBitmap:Bitmap ;//= new Bitmap(romeImageData);
//addChild(mapBitmap);
mapCont = new Sprite();
//mapCont.addChild(CityBitmap);
mapCont.x=0;
mapCont.y=0;
addChild(mapCont);
mapCont.addEventListener(MouseEvent.MOUSE_DOWN, downHandler);
//
mapMask = new Shape();
mapMask.graphics.beginFill(0x0, 1);
mapMask.graphics.drawRect(00, 00, 700, 550);
mapMask.graphics.endFill();
mapCont.mask = mapMask;
//
size = 350;
border = new Shape();
border.graphics.lineStyle(1, 0xff0000, 1);
border.graphics.moveTo(0, 0);
border.graphics.lineTo(700, 0);
border.graphics.lineTo(700, 550);
border.graphics.lineTo(0, 550);
border.graphics.lineTo(0, 0);
//
center = new Shape();
center.graphics.lineStyle(1, 0xff0000, 1);
center.graphics.moveTo( 700/2+20, 550/2);
center.graphics.lineTo( 700/2-20, 550/2);
center.graphics.moveTo( 700/2, 550/2+20);
center.graphics.lineTo( 700/2, 550/2-20);
//
this.addChild(mapCont);
this.addChild(mapMask);
this.addChild(border);
this.addChild(center);
//
this.addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandlerl);
}
private function wheelHandlerl(event:MouseEvent):void
{
trace("Wheel");
/*var direction:int = event.delta/Math.abs(event.delta);
var scale:Number = this.scale + direction*0.1;
if (scale < minScale) scale = minScale;
if (scale > maxScale) scale = maxScale;
applyScale(scale, this.mouseX, this.mouseY);*/
if (event.delta < 0)applyScale(0.95, this.mouseX, this.mouseY);//scaling(0.95);
if (event.delta > 0)applyScale(1.05, this.mouseX, this.mouseY);//scaling(1.05);
Check_The_Granici();
trace("Scale = "+mapCont.scaleX);
event.updateAfterEvent();
}
private function downHandler(event:MouseEvent):void
{
this.stage.addEventListener(MouseEvent.MOUSE_UP, upHandler);
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler);
mapCont.startDrag();
}
private function moveHandler(event:MouseEvent):void
{//mapMask
Check_The_Granici();
event.updateAfterEvent();
}
private function upHandler(event:MouseEvent):void
{
this.stage.removeEventListener(MouseEvent.MOUSE_UP, upHandler);
this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveHandler);
if (mapCont.x > 20 && mapCont.y > 20)
{mapCont.x = 20 ; mapCont.y = 20;}
if (mapCont.x+mapCont.width <350)
mapCont.x = 350 - mapCont.width;
mapCont.stopDrag();
}
private function Check_The_Granici()
{
if (mapCont.x > 00 )
{mapCont.x = 00 ;}
if (mapCont.y > 00)
{mapCont.y = 00 ;}
if (mapCont.x+mapCont.width <700)
mapCont.x = 700 - mapCont.width;
if (mapCont.y+mapCont.height <550)
mapCont.y = 550 - mapCont.height;
}
/*private function scaling(Scale:Number)
{
if (Scale > 1 && mapCont.scaleX < 2)
{mapCont.scaleX *= 1.05;
mapCont.scaleY *= 1.05;}
else if (Scale < 1 && mapCont.scaleX > 0.65)
{mapCont.scaleX *= 0.95;
mapCont.scaleY *= 0.95;
}
trace("Wheel. ScaleX = "+mapCont.scaleX);
}*/
private function applyScale(scale:Number, centerX:Number, centerY:Number):void
{
//супер пупер мего ограничение(защита)
if (!((scale > 1 && mapCont.scaleX < 2) || (scale < 1 && mapCont.scaleX > 0.65)))
return;
// создаем новую матрицу трансформации
var newMatrix:Matrix = new Matrix();
// смещаем матрицу в точку,
// относительно которой будет происходить масштабирование
newMatrix.translate(-centerX, -centerY);
// прменяем измененное(!!!) масштабирование
newMatrix.scale(scale, scale);
// возвращаем матрицу в исходное местоположение
newMatrix.translate(centerX, centerY);
//
// получаем текущую матрицу трансформации
var matrix:Matrix = mapCont.transform.matrix;
// умножаем текущую матрицу на новую
matrix.concat(newMatrix);
//
// применяем полученную матрицу трансформации
mapCont.transform.matrix = matrix;
//
// запоминаем текущее значение скейла
}
function CityBitmapLoader_complete(evt:Event):void {
var bmp:Bitmap = CityBitmapLoader.content as Bitmap;
CityBitmap = new Bitmap(bmp.bitmapData);
CityBitmap.x = 0;
CityBitmap.y = 0;
CityBitmap.rotation = 0;
bmp=null;
mapCont.addChild(CityBitmap);
trace ("Width ="+CityBitmap.width);
trace ("Scale ="+CityBitmap.scaleX);
}
}
}
|
|
|||||
|
Подписывайтесь на события-ошибки. Наверно по секьюрити слетает.
Добавлено через 49 секунд http://cs623426.vk.me/crossdomain.xml угу
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Oct 2014
Сообщений: 5
|
Честно говоря, я вас не понял. По какому секьюрити слетает? Что это за xml разметка?
|
|
|||||
|
Регистрация: Oct 2014
Сообщений: 5
|
Дело в том, что я вижу лишь белый экран. И иногда замечаю единичное мигание (скорее всего, подгрузилась картинка, показалась и исчезла). Запускал в браузере Googl-а. В остальных браузерах ругается на конфеденциальность.
Добавлено через 38 секунд Приведённый вами xml документ ни о чём не сказал |
|
|||||
|
Регистрация: Oct 2014
Сообщений: 5
|
Картинка загружается из rhgost по прямой ссылке.
Код рабочий (если запустить его в проэкте) |
|
|||||
|
Регистрация: Oct 2014
Сообщений: 5
|
Если я вас верно понимаю, то скачивание запрещено политикой именно сайта-источника картинки, верно?
Но почему тогда картинка загружается при запуске не в браузере, а во флеш? Насколько понял, это разрешение обмена данными между доменами. Решение проблемы - создать сайт, где хранились бы нужные картинки, чтобы их можно было в любое время подгрузить в клиентской SWF? |
|
|||||
|
Ну можно прокси-сервер забацать. Или найти хак свежий для решения проблемы, вроде был в блогах, только не знаю работает он сейчас или нет
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|