about _jQuery + Flex 通过拖拽方式动态改变图片

功能终于告一段落了,实现了预期的功能。

遇到了一个小麻烦,js 会把某些变量( 如果你是通过对象的方式传递的,将在传递之后丢失类型信息 ,后面*号部分)

代码如下:

function init() {
    if(swfobject.hasFlashPlayerVersion("10")){
        var flashvars = {};
            flashvars.xmlPath = "coffee";
            flashvars.name    = "coffee";

        var params = {};
            params.quality = "high";
            params.wmode = "transparent";

        var attributes = {};
            attributes.id = "swf_editer";

        swfobject.embedSWF("../img/swf/PhotoEditer2.swf","editarea","670","690","10.3"
                          ,"../img/swf/playerProductInstall.swf",flashvars,params,attributes);

        $( ".draggable" ).draggable({ revert: true, helper: "clone" });

        $("body").bind("mousemove",getListener);
    }
}

var srcName = "";

var currentX = 0;
var currentY = 0;
var currentTop = 0;

function setImgLocal(srcName) {
    bindDroppable();
    this.srcName = srcName ;
}

function changeSwfImg() {
    if(srcName === "" || srcName === null){
        return ;
    }
    var swf = swfobject.getObjectById("swf_editer");

    var swfCoord = getSwfCoord();

    var dom = {};
        dom.name = srcName;
        dom.changeFlg = 0;

//********************************* 

// 此处如果直接

//alert(swfCoord.domY + swfCoord.domHeight - 220);

//会发现 alert 的值并不是计算后的结果,而是 swfCoord.domY 的值 以字符串的形式追加了

//(swfCoord.domHeight -220) 后的值,无奈只好通过下面的方法:

    var tmp1 = swfCoord.domY - 0;
        tmp2 = swfCoord.domHeight - 220;

//********************************* 

    if((currentTop + currentY) > (swfCoord.domY + 100)
        && (currentTop + currentY) < (tmp1 + tmp2))
    {
        dom.changeFlg = currentX - swfCoord.domX < swfCoord.domWidth/2 ? 1 : 2;
    }

    swf.FlexManager(dom);
}

function bindDroppable() {
    $("#swf_editer").droppable({
     accept: "#dv_draggables img",
  drop: function(event, ui) {
   changeSwfImg();
  }
 });
}

//*****获得鼠标相对坐标,(currentY + currentTop  即鼠标在网页中的绝对纵坐标,绝对横坐标同理)*****

function getListener(event) {
    currentX = event.clientX;
    currentY = event.clientY;
    currentTop = document.documentElement.scrollTop ;
}

//*****获得对象绝对坐标************

function getSwfCoord() {

    var swf = swfobject.getObjectById("swf_editer");

    var dom = {};
        dom.domX = 0 , dom.domY = 0;
        dom.domWidth = swf.width;
        dom.domHeight = swf.height;

    while(swf.offsetParent) {

  dom.domX += swf.offsetLeft;

  dom.domY += swf.offsetTop;

        swf = swf.offsetParent;

    }
    return dom;
}

posted on 2011-08-03 18:14  破阵子 . 如是我闻  阅读(377)  评论(0编辑  收藏  举报

导航